From: Joshua Oreman Date: Wed, 27 Jan 2010 04:55:23 +0000 (-0500) Subject: [uri] Handle an empty unparse_uri() result properly X-Git-Url: http://git.etherboot.org/people/pcmattman/gpxe.git/commitdiff_plain/e6f08b0aa79a07bcadff203c91245db0dcd155b7?ds=inline [uri] Handle an empty unparse_uri() result properly Previously, if none of the URI parts requested existed in the passed URI, unparse_uri() would not touch the destination buffer at all; this could lead to use of uninitialized data. Fix by setting buf[0] = '\0' before unparsing whenever we have room to do so. Signed-off-by: Joshua Oreman Signed-off-by: Marty Connor --- diff --git a/src/core/uri.c b/src/core/uri.c index 96667782..6a1f2e59 100644 --- a/src/core/uri.c +++ b/src/core/uri.c @@ -225,12 +225,13 @@ int unparse_uri ( char *buf, size_t size, struct uri *uri, dump_uri ( uri ); DBG ( "\n" ); + /* Ensure buffer is NUL-terminated */ + if ( size ) + buf[0] = '\0'; + /* Special-case NULL URI */ - if ( ! uri ) { - if ( size ) - buf[0] = '\0'; + if ( ! uri ) return 0; - } /* Iterate through requested fields */ for ( i = URI_FIRST_FIELD; i <= URI_LAST_FIELD; i++ ) {