opt: fix junk after string in opt_show_charp.
[ccan] / ccan / opt / helpers.c
index 0f3671e526d838264d78d8f68b2120acbaa71e44..e657ebff8727090c676e7e594520855fa208de89 100644 (file)
@@ -91,10 +91,8 @@ char *opt_set_longval(const char *arg, long *l)
        *l = strtol(arg, &endp, 0);
        if (*endp || !arg[0])
                return arg_bad("'%s' is not a number", arg);
-       if (errno == ERANGE)
-               return arg_bad("'%s' is out of range", arg);
        if (errno)
-               return opt_invalid_argument(arg);
+               return arg_bad("'%s' is out of range", arg);
        return NULL;
 }
 
@@ -149,6 +147,8 @@ void opt_show_charp(char buf[OPT_SHOW_LEN], char *const *p)
                len = OPT_SHOW_LEN - 2;
        strncpy(buf+1, *p, len);
        buf[1+len] = '"';
+       if (len < OPT_SHOW_LEN - 2)
+               buf[2+len] = '\0';
 }
 
 /* Set an integer value, various forms.  Sets to 1 on arg == NULL. */