summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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 ca96295c4..008bff01e 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 *