summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorLuke Howard <lukeh@padl.com>2012-12-30 10:36:25 -0500
committerGreg Hudson <ghudson@mit.edu>2013-01-01 17:41:49 -0500
commit54fa4433df7412267375240aba40959e97ac4fe2 (patch)
tree67eadb223df8938166e7da9cd94a4526e90724c9 /src/lib/gssapi
parent02de9812378cf62293b4acbdaa5f1e13d9c38c6d (diff)
downloadkrb5-54fa4433df7412267375240aba40959e97ac4fe2.tar.gz
krb5-54fa4433df7412267375240aba40959e97ac4fe2.tar.xz
krb5-54fa4433df7412267375240aba40959e97ac4fe2.zip
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] ticket: 7523 (new) target_version: 1.11.1 tags: pullup
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/generic/oid_ops.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/gssapi/generic/oid_ops.c b/src/lib/gssapi/generic/oid_ops.c
index 85584fc3bd..de38dd7241 100644
--- a/src/lib/gssapi/generic/oid_ops.c
+++ b/src/lib/gssapi/generic/oid_ops.c
@@ -345,10 +345,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]) &&
@@ -386,20 +386,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 == '.')