summaryrefslogtreecommitdiffstats
path: root/src/kadmin
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-03-21 01:48:22 -0400
committerGreg Hudson <ghudson@mit.edu>2013-03-21 01:59:46 -0400
commit093704b74884dca424ffe5a88765e3c513f71ecb (patch)
treedcae4848eaca9addbb11ff4765052445b695e926 /src/kadmin
parent48e750799dff48239a044c6a732f41ded25cc624 (diff)
downloadkrb5-093704b74884dca424ffe5a88765e3c513f71ecb.tar.gz
krb5-093704b74884dca424ffe5a88765e3c513f71ecb.tar.xz
krb5-093704b74884dca424ffe5a88765e3c513f71ecb.zip
Clean up getclhoststr in ipropd_svc.c
Based on a patch from Xi Wang <xi@mit.edu>.
Diffstat (limited to 'src/kadmin')
-rw-r--r--src/kadmin/server/ipropd_svc.c26
1 files 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 *