Review #751 » 0003-sanitize-bip_strcat-f-_fit-cleanup.patch
src/util.c | ||
---|---|---|
return r;
|
||
}
|
||
char *bip_strcat_fit(size_t *remaining, char *str, char *str2)
|
||
char *bip_strcat_fit(size_t *remaining, char *str, const char *str2)
|
||
{
|
||
char *res;
|
||
... | ... | |
return res;
|
||
}
|
||
char *bip_strcatf_fit(size_t *remaining, char *str, char *fmt, ...)
|
||
#define STRCATF_BUF_MAXLEN 1024
|
||
char *bip_strcatf_fit(size_t *remaining, char *str, const char *fmt, ...)
|
||
{
|
||
va_list ap;
|
||
char str2[*remaining];
|
||
size_t written;
|
||
char str2[STRCATF_BUF_MAXLEN + 1];
|
||
int written;
|
||
char *res = NULL;
|
||
if (!remaining || !str || !fmt) {
|
||
... | ... | |
return NULL;
|
||
}
|
||
if (*remaining > STRCATF_BUF_MAXLEN) {
|
||
mylog(LOG_ERROR, "bip_strcatf_fit: remaining "
|
||
"is over STRCATF_BUF_MAXLEN");
|
||
}
|
||
va_start(ap, fmt);
|
||
str2[*remaining] = '\0';
|
||
written = vsnprintf(str2, *remaining, fmt, ap);
|
||
if (written >= *remaining) {
|
||
if (written < 0) {
|
||
mylog(LOG_ERROR, "bip_strcatf_fit: vsnprintf failed with: %s",
|
||
strerror(errno));
|
||
return NULL;
|
||
}
|
||
if ((unsigned)written >= *remaining) {
|
||
mylog(LOG_DEBUGVERB, "bip_strcatf_fit,vsnprintf: no space left");
|
||
goto end;
|
||
}
|
||
res = memccpy(str, str2, '\0', *remaining);
|
||
if (!res) {
|
||
mylog(LOG_DEBUGTOOMUCH, "bip_strcatf_fit: memccpy() failed, remaining %lu",
|
||
*remaining);
|
||
mylog(LOG_DEBUGTOOMUCH, "bip_strcatf_fit: memccpy() failed, "
|
||
"remaining %lu", *remaining);
|
||
goto end;
|
||
}
|
||
src/util.h | ||
---|---|---|
void *bip_calloc(size_t nmemb, size_t size);
|
||
void *bip_realloc(void *ptr, size_t size);
|
||
char *bip_strdup(const char *str);
|
||
char *bip_strcat_fit(size_t *remaining, char *str, char *str2);
|
||
char *bip_strcatf_fit(size_t *remaining, char *str, char *str2, ...);
|
||
char *bip_strcat_fit(size_t *remaining, char *str, const char *str2);
|
||
char *bip_strcatf_fit(size_t *remaining, char *str, const char *str2, ...);
|
||
#define array_each(a, idx, ptr) for ((idx) = 0; \
|
||
(idx) < (a)->elemc && (((ptr) = array_get((a), (idx))) || 1); \
|
||
(idx)++)
|
- « Previous
- 1
- 2
- 3
- 4
- Next »