diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2018-01-29 17:02:07 +0530 |
---|---|---|
committer | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2018-02-08 12:30:49 +0530 |
commit | d7ebb697457fc4b8562bb1475a6832f1badb15f8 (patch) | |
tree | 7f17403413bb4d8e9ef5c0b09f0564f406ed45df /utils | |
parent | 540e81676b1011dcf85fbe5cd6739a4f2143b2ab (diff) |
replace strcat and strcpy with their secure versions
Change-Id: If98ce7b7e50901ee130bbe190a12664ec0adb8c2
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/capabilities.c | 2 | ||||
-rw-r--r-- | utils/lru.c | 4 | ||||
-rw-r--r-- | utils/utils.c | 20 | ||||
-rw-r--r-- | utils/utils.h | 10 |
4 files changed, 33 insertions, 3 deletions
diff --git a/utils/capabilities.c b/utils/capabilities.c index d44dc8f..187b166 100644 --- a/utils/capabilities.c +++ b/utils/capabilities.c @@ -71,7 +71,7 @@ gbSetCapabilties(blockResponse **c) ret = gbCapabilitiesEnumParse(p); if (ret != GB_CAP_MAX) { - strncpy(caps[count].cap, gbCapabilitiesLookup[ret], 256); + GB_STRCPYSTATIC(caps[count].cap, gbCapabilitiesLookup[ret]); /* Part after ':' and before '\n' */ p = sep + 1; diff --git a/utils/lru.c b/utils/lru.c index 7fd036e..4348da6 100644 --- a/utils/lru.c +++ b/utils/lru.c @@ -16,7 +16,7 @@ static int lruCount; size_t glfsLruCount = 5; /* default lru cache size */ typedef struct Entry { - char volume[256]; + char volume[255]; glfs_t *glfs; struct list_head list; @@ -56,7 +56,7 @@ appendNewEntry(const char *volname, glfs_t *fs) if (GB_ALLOC(tmp) < 0) { return -1; } - strcpy(tmp->volume, volname); + GB_STRCPYSTATIC(tmp->volume, volname); tmp->glfs = fs; list_add(&(tmp->list), &Cache); diff --git a/utils/utils.c b/utils/utils.c index e76c112..13d61cc 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -340,3 +340,23 @@ gbStrdup(char **dest, const char *src, return 0; } + + +char * +gbStrcpy(char *dest, const char *src, size_t destbytes, + const char *filename, const char *funcname, size_t linenr) +{ + char *ret; + size_t n = strlen(src); + + if (n > (destbytes - 1)) + return NULL; + + ret = strncpy(dest, src, n); + /* strncpy NULL terminates if the last character is \0. Therefore + * force the last byte to be \0 + */ + dest[n] = '\0'; + + return ret; +} diff --git a/utils/utils.h b/utils/utils.h index 7693b5c..3362c10 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -327,6 +327,13 @@ extern struct gbConf gbConf; gbStrdup(&(dst), src, \ __FILE__, __FUNCTION__, __LINE__) +# define GB_STRCPY(dst, src, destbytes) \ + gbStrcpy((dst), (src), (destbytes), \ + __FILE__, __FUNCTION__, __LINE__) + +# define GB_STRCPYSTATIC(dst, src) \ + GB_STRCPY((dst), (src), (sizeof(dst))) + # define GB_FREE(ptr) \ gbFree(1 ? (void *) &(ptr) : (ptr)) @@ -532,6 +539,9 @@ int gbReallocN(void *ptrptr, size_t size, size_t count, int gbStrdup(char **dest, const char *src, const char *filename, const char *funcname, size_t linenr); +char* gbStrcpy(char *dest, const char *src, size_t destbytes, + const char *filename, const char *funcname, size_t linenr); + void gbFree(void *ptrptr); #endif /* _UTILS_H */ |