aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoshua Oreman <oremanj@rwcr.net>2010-01-26 23:55:23 -0500
committerMarty Connor <mdc@etherboot.org>2010-01-27 08:50:49 -0500
commite6f08b0aa79a07bcadff203c91245db0dcd155b7 (patch)
tree1511772d0d79bdd7b324d4e6ecdb941345d00436 /src
parent329c7b78e3b0b4148c91fde910fb22b2fc0df7fe (diff)
downloadipxe-e6f08b0aa79a07bcadff203c91245db0dcd155b7.zip
ipxe-e6f08b0aa79a07bcadff203c91245db0dcd155b7.tar.gz
ipxe-e6f08b0aa79a07bcadff203c91245db0dcd155b7.tar.bz2
[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 <oremanj@rwcr.net> Signed-off-by: Marty Connor <mdc@etherboot.org>
Diffstat (limited to 'src')
-rw-r--r--src/core/uri.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/core/uri.c b/src/core/uri.c
index 9666778..6a1f2e5 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++ ) {