X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-shell%2Fresult.c;h=25ac11802137dcf5a47565ffc42e3bad02e686b0;hb=02cafebb8e797d4535c7ac558ff7a08387f3d9f6;hp=ddad3f49e82395a3b92ec007eac6693cfc7c26ea;hpb=3e5875d7e7abecd84732358de3566fdf2398ddf9;p=openldap diff --git a/servers/slapd/back-shell/result.c b/servers/slapd/back-shell/result.c index ddad3f49e8..25ac118021 100644 --- a/servers/slapd/back-shell/result.c +++ b/servers/slapd/back-shell/result.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2003 The OpenLDAP Foundation. + * Copyright 1998-2011 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -49,6 +49,7 @@ read_and_send_results( int bsize, len; char *buf, *bp; char line[BUFSIZ]; + char ebuf[128]; /* read in the result and send it along */ buf = (char *) ch_malloc( BUFSIZ ); @@ -61,7 +62,7 @@ read_and_send_results( if ( errno == EINTR ) continue; Debug( LDAP_DEBUG_ANY, "shell: fgets failed: %s (%d)\n", - strerror(errno), errno, 0 ); + AC_STRERROR_R(errno, ebuf, sizeof ebuf), errno, 0 ); break; } @@ -79,7 +80,7 @@ read_and_send_results( } len = strlen( line ); - while ( bp + len - buf > bsize ) { + while ( bp + len + 1 - buf > bsize ) { size_t offset = bp - buf; bsize += BUFSIZ; buf = (char *) ch_realloc( buf, bsize ); @@ -99,8 +100,10 @@ read_and_send_results( buf, 0, 0 ); } else { rs->sr_attrs = op->oq_search.rs_attrs; + rs->sr_flags = REP_ENTRY_MODIFIABLE; send_search_entry( op, rs ); entry_free( rs->sr_entry ); + rs->sr_attrs = NULL; } bp = buf;