(hex_decode): support decoding odd number of characters, in the odd

len case, the character ends up in the first byte in the lower nibble.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16504 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-01-09 17:09:29 +00:00
parent f9dbc89ee3
commit eda99f62e6

View File

@@ -91,7 +91,13 @@ hex_decode(const char *str, void *data, size_t len)
if ((l/2) + (l&1) > len) if ((l/2) + (l&1) > len)
return -1; return -1;
i = 0;
if (l & 1) {
p[0] = pos(str[0]);
str++;
p++;
}
for (i = 0; i < l / 2; i++) for (i = 0; i < l / 2; i++)
p[i] = pos(str[i * 2]) << 4 | pos(str[(i * 2) + 1]); p[i] = pos(str[i * 2]) << 4 | pos(str[(i * 2) + 1]);
return i; return i + (l & 1);
} }