From 2344b8edd958a1089fb19e985a735b41f6e7677e Mon Sep 17 00:00:00 2001 From: Kevin Coffman Date: Thu, 8 Feb 2007 17:27:09 -0500 Subject: [PATCH] Treat GSSAPI error codes as unsigned. Signed-off-by: Kevin Coffman GSSAPI error codes (major and minor) are defined as unsigned values. However, we treat them as signed while passing them down to the kernel where conversion fails if they include the minus sign. Convert them as unsigned. Signed-off-by: Neil Brown --- utils/gssd/cacheio.c | 11 +++++++++++ utils/gssd/cacheio.h | 1 + utils/gssd/svcgssd_proc.c | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/utils/gssd/cacheio.c b/utils/gssd/cacheio.c index f2f2960..e24ef56 100644 --- a/utils/gssd/cacheio.c +++ b/utils/gssd/cacheio.c @@ -132,6 +132,17 @@ void qword_addint(char **bpp, int *lp, int n) *lp -= len; } +void qword_adduint(char **bpp, int *lp, unsigned int n) +{ + int len; + + len = snprintf(*bpp, *lp, "%u ", n); + if (len > *lp) + len = *lp; + *bpp += len; + *lp -= len; +} + void qword_addeol(char **bpp, int *lp) { if (*lp <= 0) diff --git a/utils/gssd/cacheio.h b/utils/gssd/cacheio.h index dfff258..6585fc7 100644 --- a/utils/gssd/cacheio.h +++ b/utils/gssd/cacheio.h @@ -36,6 +36,7 @@ void qword_add(char **bpp, int *lp, char *str); void qword_addhex(char **bpp, int *lp, char *buf, int blen); void qword_addint(char **bpp, int *lp, int n); +void qword_adduint(char **bpp, int *lp, unsigned int n); void qword_addeol(char **bpp, int *lp); void qword_print(FILE *f, char *str); void qword_printhex(FILE *f, char *str, int slen); diff --git a/utils/gssd/svcgssd_proc.c b/utils/gssd/svcgssd_proc.c index 4037159..7c58f7b 100644 --- a/utils/gssd/svcgssd_proc.c +++ b/utils/gssd/svcgssd_proc.c @@ -125,8 +125,8 @@ send_response(FILE *f, gss_buffer_desc *in_handle, gss_buffer_desc *in_token, qword_addhex(&bp, &blen, in_handle->value, in_handle->length); qword_addhex(&bp, &blen, in_token->value, in_token->length); qword_addint(&bp, &blen, 0x7fffffff); /*XXX need a better timeout */ - qword_addint(&bp, &blen, maj_stat); - qword_addint(&bp, &blen, min_stat); + qword_adduint(&bp, &blen, maj_stat); + qword_adduint(&bp, &blen, min_stat); qword_addhex(&bp, &blen, out_handle->value, out_handle->length); qword_addhex(&bp, &blen, out_token->value, out_token->length); qword_addeol(&bp, &blen); -- 2.39.2