X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=src%2Flib%2Fcmdline_parse_ipaddr.c;h=eab2319b0b92960a254f482d6df7b98ddafbca7f;hb=f32d30f48ddfb55b86efd695e0dd144e9d15401e;hp=37b2f3bd02276ae5c824e002ca5ed0c82b893de5;hpb=5dbaf53aa2c6187d464108e360621ebfff6e0bc4;p=libcmdline.git diff --git a/src/lib/cmdline_parse_ipaddr.c b/src/lib/cmdline_parse_ipaddr.c index 37b2f3b..eab2319 100644 --- a/src/lib/cmdline_parse_ipaddr.c +++ b/src/lib/cmdline_parse_ipaddr.c @@ -93,13 +93,6 @@ #include "cmdline_parse.h" #include "cmdline_parse_ipaddr.h" -struct cmdline_token_ops cmdline_token_ipaddr_ops = { - .parse = cmdline_parse_ipaddr, - .complete_get_nb = NULL, - .complete_get_elt = NULL, - .get_help = cmdline_get_help_ipaddr, -}; - #define INADDRSZ 4 #define IN6ADDRSZ 16 @@ -289,8 +282,9 @@ inet_pton6(const char *src, unsigned char *dst) return (1); } -int -cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res) +static int +cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res, + unsigned ressize) { struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk; unsigned int token_len = 0; @@ -299,6 +293,9 @@ cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res) char *prefix, *prefix_end; long prefixlen; + if (res && ressize < sizeof(cmdline_ipaddr_t)) + return -1; + /* if token is too big... */ token_len = snprintf(ip_str, sizeof(ip_str), "%s", buf); if (token_len >= sizeof(ip_str)) @@ -336,8 +333,9 @@ cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res) } -int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size) +static int +cmdline_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, + unsigned int size) { struct cmdline_token_ipaddr *tk2 = (struct cmdline_token_ipaddr *)tk; @@ -366,3 +364,12 @@ int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, } return 0; } + +struct cmdline_token_ops cmdline_token_ipaddr_ops = { + .parse = cmdline_parse_ipaddr, + .complete_start = NULL, + .complete_iterate = NULL, + .complete_end = NULL, + .help = cmdline_help_ipaddr, +}; +