diff options
-rw-r--r-- | editors/sed.c | 2 | ||||
-rw-r--r-- | include/inet_common.h | 2 | ||||
-rw-r--r-- | include/libbb.h | 1 | ||||
-rw-r--r-- | libbb/bb_asprintf.c | 10 |
4 files changed, 13 insertions, 2 deletions
diff --git a/editors/sed.c b/editors/sed.c index 93d3f89..44e86e2 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -434,7 +434,7 @@ static char *parse_cmd_args(sed_cmd_t *sed_cmd, char *cmdstr) while(isspace(*cmdstr)) cmdstr++; length = strcspn(cmdstr, semicolon_whitespace); if (length) { - sed_cmd->string = strndup(cmdstr, length); + sed_cmd->string = bb_xstrndup(cmdstr, length); cmdstr += length; } } diff --git a/include/inet_common.h b/include/inet_common.h index afea5de..f330aa9 100644 --- a/include/inet_common.h +++ b/include/inet_common.h @@ -11,7 +11,7 @@ #include <features.h> #include <sys/types.h> #include <sys/socket.h> -#include <arpa/inet.h> +#include <netinet/in.h> extern const char bb_INET_default[]; /* = "default" */ diff --git a/include/libbb.h b/include/libbb.h index bc3fa59..0490ee3 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -20,6 +20,7 @@ #include <stdint.h> #include <netdb.h> +#include <netinet/in.h> #include <features.h> diff --git a/libbb/bb_asprintf.c b/libbb/bb_asprintf.c index 8658a54..191417a 100644 --- a/libbb/bb_asprintf.c +++ b/libbb/bb_asprintf.c @@ -13,9 +13,19 @@ char *bb_xasprintf(const char *format, ...) int r; char *string_ptr; +#ifdef HAVE_GNU_EXTENSIONS va_start(p, format); r = vasprintf(&string_ptr, format, p); va_end(p); +#else + va_start(p, format); + r = vsnprintf(NULL, 0, format, p); + va_end(p); + string_ptr = xmalloc(r+1); + va_start(p, format); + r = vsnprintf(string_ptr, r+1, format, p); + va_end(p); +#endif if (r < 0) { bb_perror_msg_and_die("bb_xasprintf"); |