diff options
author | raiz <raiz@firemail.cc> | 2016-12-18 10:35:36 +0300 |
---|---|---|
committer | raiz <raiz@firemail.cc> | 2016-12-18 10:35:36 +0300 |
commit | 5a218e990ca05e6bb087f4fecaaa4807fbe69528 (patch) | |
tree | 1a2bb42f1a10d176c3d7d318eacf2c9738acc2e9 | |
parent | 1a143566e60d63435c7504382a717e0503decb47 (diff) |
remove unused strlcpy() and reduce the size of output buffer
-rw-r--r-- | extern/strlcpy.h | 50 | ||||
-rw-r--r-- | slstatus.c | 5 |
2 files changed, 3 insertions, 52 deletions
diff --git a/extern/strlcpy.h b/extern/strlcpy.h deleted file mode 100644 index 6301674..0000000 --- a/extern/strlcpy.h +++ /dev/null @@ -1,50 +0,0 @@ -/* $OpenBSD: strlcpy.c,v 1.13 2015/08/31 02:53:57 guenther Exp $ */ - -/* - * Copyright (c) 1998, 2015 Todd C. Miller <Todd.Miller@courtesan.com> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <sys/types.h> -#include <string.h> - -/* - * Copy string src to buffer dst of size dsize. At most dsize-1 - * chars will be copied. Always NUL terminates (unless dsize == 0). - * Returns strlen(src); if retval >= dsize, truncation occurred. - */ -size_t -strlcpy(char *dst, const char *src, size_t dsize) -{ - const char *osrc = src; - size_t nleft = dsize; - - /* Copy as many bytes as will fit. */ - if (nleft != 0) { - while (--nleft != 0) { - if ((*dst++ = *src++) == '\0') - break; - } - } - - /* Not enough room in dst, add NUL and traverse rest of src. */ - if (nleft == 0) { - if (dsize != 0) - *dst = '\0'; /* NUL-terminate dst */ - while (*src++) - ; - } - - return(src - osrc - 1); /* count does not include NUL */ -} @@ -759,7 +759,7 @@ int main(int argc, char *argv[]) { unsigned short int i; - char status_string[4096]; + char status_string[2048]; char *res, *element; struct arg argument; struct sigaction act; @@ -811,7 +811,8 @@ main(int argc, char *argv[]) element = smprintf(UNKNOWN_STR); warnx("Failed to format output"); } - strlcat(status_string, element, sizeof(status_string)); + if (strlcat(status_string, element, sizeof(status_string)) >= sizeof(status_string)) + warnx("Output too long"); free(res); free(element); } |