From: Luke Howard Date: Sun, 30 Dec 2012 15:36:25 +0000 (-0500) Subject: Fix gss_str_to_oid for OIDs with zero-valued arcs X-Git-Tag: krb5-1.10.4-final~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=adf07b060c57ce900656d9ac6f491a84ede7bcc6;p=thirdparty%2Fkrb5.git Fix gss_str_to_oid for OIDs with zero-valued arcs gss_str_to_oid wasn't outputting any bytes for a zero-valued arc. It should output one byte with value 0. [ghudson@mit.edu: commit message] (cherry picked from commit 54fa4433df7412267375240aba40959e97ac4fe2) ticket: 7579 (new) version_fixed: 1.10.4 status: resolved --- diff --git a/src/lib/gssapi/generic/oid_ops.c b/src/lib/gssapi/generic/oid_ops.c index 535fe57d8f..7645efe9ff 100644 --- a/src/lib/gssapi/generic/oid_ops.c +++ b/src/lib/gssapi/generic/oid_ops.c @@ -339,10 +339,10 @@ generic_gss_str_to_oid(OM_uint32 *minor_status, if (sscanf((char *)bp, "%ld", &numbuf) != 1) { return(GSS_S_FAILURE); } - while (numbuf) { + do { nbytes++; numbuf >>= 7; - } + } while (numbuf); while ((bp < &cp[oid_str->length]) && isdigit(*bp)) bp++; while ((bp < &cp[oid_str->length]) && @@ -380,20 +380,20 @@ generic_gss_str_to_oid(OM_uint32 *minor_status, nbytes = 0; /* Have to fill in the bytes msb-first */ onumbuf = numbuf; - while (numbuf) { + do { nbytes++; numbuf >>= 7; - } + } while (numbuf); numbuf = onumbuf; op += nbytes; i = -1; - while (numbuf) { + do { op[i] = (unsigned char) numbuf & 0x7f; if (i != -1) op[i] |= 0x80; i--; numbuf >>= 7; - } + } while (numbuf); while (isdigit(*bp)) bp++; while (isspace(*bp) || *bp == '.')