diff options
author | Michael Adam <obnox@samba.org> | 2011-10-18 18:10:00 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2011-10-18 22:32:59 +0200 |
commit | 47aa9ed82f67758c3b4d9ab46dd8dd65508a10eb (patch) | |
tree | 73ae4dad6aceeb60c7eb68308f5864be3e7ae0cb /lib | |
parent | cb47890cf2734afff502cf8b95635ebc75bc5974 (diff) | |
download | samba-47aa9ed82f67758c3b4d9ab46dd8dd65508a10eb.tar.gz samba-47aa9ed82f67758c3b4d9ab46dd8dd65508a10eb.tar.bz2 samba-47aa9ed82f67758c3b4d9ab46dd8dd65508a10eb.zip |
lib/util: skip single hex digit at the end of the input sting - fix potential segfault
The second of two digits was read without checking for the length of the input
string. For a non-zero-terminated input string, this might have caused a
segfault.
Autobuild-User: Michael Adam <obnox@samba.org>
Autobuild-Date: Tue Oct 18 22:32:59 CEST 2011 on sn-devel-104
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util/util.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/util/util.c b/lib/util/util.c index 67ac6938a4..133bd0dfb0 100644 --- a/lib/util/util.c +++ b/lib/util/util.c @@ -694,6 +694,7 @@ _PUBLIC_ _PURE_ size_t count_chars(const char *s, char c) * - "0xnn" or "0Xnn" is specially catered for. * - The first non-hex-digit character (apart from possibly leading "0x" * finishes the conversion and skips the rest of the input. + * - A single hex-digit character at the end of the string is skipped. * * valid examples: "0A5D15"; "0x123456" */ @@ -710,7 +711,7 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t p_len, const char *strhex, size_t i += 2; /* skip two chars */ } - for (; i < strhex_len && strhex[i] != 0; i++) { + for (; i+1 < strhex_len && strhex[i] != 0 && strhex[i+1] != 0; i++) { p1 = strchr(hexchars, toupper((unsigned char)strhex[i])); if (p1 == NULL) { break; |