1b32cf0583db4331765a056c45ff4fc98c36b649 galt Tue Dec 31 22:39:16 2024 -0800 minor fix in clarity for safecpy in lib. diff --git src/lib/common.c src/lib/common.c index 08b4e27..e6e5e85 100644 --- src/lib/common.c +++ src/lib/common.c @@ -3527,31 +3527,31 @@ * 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) +if ((slen + 1) > bufSize) 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); // strlen(src) can take a long time when src is for example a pointer into a chromosome sequence. // Instead of setting slen to max(strlen(src), n), just stop counting length at n. size_t slen = 0; while (src[slen] != '\0' && slen < n) slen++;