36f8f6fb024b20cc523cdf9ebde7491eca84fd7c markd Sun Dec 6 20:33:20 2020 -0800 multiple request per connect works except hgBlat diff --git src/lib/common.c src/lib/common.c index 8934408..99474c2 100644 --- src/lib/common.c +++ src/lib/common.c @@ -3448,30 +3448,43 @@ return sz; } int safef(char* buffer, int bufSize, char *format, ...) /* Format string to buffer, vsprintf style, only with buffer overflow * checking. The resulting string is always terminated with zero byte. */ { int sz; va_list args; va_start(args, format); sz = vasafef(buffer, bufSize, format, args); va_end(args); return sz; } +int safefcat(char* buffer, int bufSize, char *format, ...) +/* Safely format string to the end of the buffer. Returns number of characters + * appended. */ +{ +int sz, len = strlen(buffer);; +va_list args; +va_start(args, format); +sz = vasafef(buffer + len, bufSize - len, format, args); +va_end(args); +return sz; +} + + void safecpy(char *buf, size_t bufSize, const char *src) /* copy a string to a buffer, with bounds checking.*/ { size_t slen = strlen(src); if (slen > bufSize-1) errAbort("buffer overflow, size %lld, string size: %lld", (long long)bufSize, (long long)slen); strcpy(buf, src); } void safencpy(char *buf, size_t bufSize, const char *src, size_t n) /* copy n characters from a string to a buffer, with bounds checking. * Unlike strncpy, always null terminates the result */ { if (n > bufSize-1) errAbort("buffer overflow, size %lld, substring size: %lld", (long long)bufSize, (long long)n);