summaryrefslogtreecommitdiffstats
path: root/lib/libaccess/lasdns.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libaccess/lasdns.cpp')
-rw-r--r--lib/libaccess/lasdns.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/libaccess/lasdns.cpp b/lib/libaccess/lasdns.cpp
index 6b2c4a12..e3a541bd 100644
--- a/lib/libaccess/lasdns.cpp
+++ b/lib/libaccess/lasdns.cpp
@@ -132,7 +132,7 @@ LASDnsMatch(char *token, LASDnsContext_t *context)
int
LASDnsBuild(NSErr_t *errp, char *attr_pattern, LASDnsContext_t *context, int aliasflg)
{
- int delimiter; /* length of valid token */
+ size_t delimiter; /* length of valid token */
char token[256]; /* max length dns name */
int i;
int ipcnt;
@@ -162,9 +162,13 @@ LASDnsBuild(NSErr_t *errp, char *attr_pattern, LASDnsContext_t *context, int ali
}
do {
+ size_t maxsize = sizeof(token);
/* Get a single hostname from the pattern string */
delimiter = strcspn(attr_pattern, ", \t");
- strncpy(token, attr_pattern, delimiter);
+ if (delimiter >= maxsize) {
+ delimiter = maxsize-1;
+ }
+ PL_strncpyz(token, attr_pattern, delimiter);
token[delimiter] = '\0';
/* Skip any white space after the token */