summaryrefslogtreecommitdiff
path: root/uhttpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'uhttpd.c')
-rw-r--r--uhttpd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/uhttpd.c b/uhttpd.c
index 9b96086..5d66e23 100644
--- a/uhttpd.c
+++ b/uhttpd.c
@@ -948,9 +948,10 @@ int main (int argc, char **argv)
for (opt = 0; optarg[opt]; opt++)
if (optarg[opt] == '+')
optarg[opt] = ' ';
-
- memset(port, 0, strlen(optarg)+1);
- uh_urldecode(port, strlen(optarg), optarg, strlen(optarg));
+ /* opt now contains strlen(optarg) -- no need to re-scan */
+ memset(port, 0, opt+1);
+ if (uh_urldecode(port, opt, optarg, opt) < 0)
+ fprintf( stderr, "uhttpd: invalid encoding\n" );
printf("%s", port);
free(port);