From 093704b74884dca424ffe5a88765e3c513f71ecb Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Thu, 21 Mar 2013 01:48:22 -0400 Subject: [PATCH] Clean up getclhoststr in ipropd_svc.c Based on a patch from Xi Wang . --- src/kadmin/server/ipropd_svc.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/kadmin/server/ipropd_svc.c b/src/kadmin/server/ipropd_svc.c index ca96295c46..008bff01eb 100644 --- a/src/kadmin/server/ipropd_svc.c +++ b/src/kadmin/server/ipropd_svc.c @@ -239,24 +239,16 @@ out: * Return arg cl str ptr on success, else NULL. */ static char * -getclhoststr(char *clprinc, char *cl, size_t len) +getclhoststr(const char *clprinc, char *cl, size_t len) { - char *s; - if ((s = strchr(clprinc, '/')) != NULL) { - /* XXX "!++s"? */ - if (!++s) - return NULL; - if (strlcpy(cl, s, len) >= len) - return NULL; - /* XXX Copy with @REALM first, with bounds check, then - chop off the realm?? */ - if ((s = strchr(cl, '@')) != NULL) { - *s = '\0'; - return (cl); /* success */ - } - } - - return (NULL); + const char *s, *e; + + if ((s = strchr(clprinc, '/')) == NULL || (e = strchr(++s, '@')) == NULL || + (size_t)(e - s) >= len) + return NULL; + memcpy(cl, s, e - s); + cl[e - s] = '\0'; + return (cl); } static kdb_fullresync_result_t * -- 2.47.2