]> git.pond.sub.org Git - empserver/commitdiff
(doexecute): Use fname(). Simplify convoluted logic. Fix check for
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 17 Nov 2007 09:41:16 +0000 (09:41 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 17 Nov 2007 09:41:16 +0000 (09:41 +0000)
empty argument.  Improve error messages.

src/client/servcmd.c

index c6fe0542112446d0db003269bac8b03cbb172dcf..24bae60844c9e544e249c268d191df91048f8b9c 100644 (file)
@@ -266,23 +266,22 @@ doexecute(char *p, FILE *auxfi)
     char *tag;
 
     tag = gettag(p);
-    while (*p && isspace(*p))
-       p++;
     if (tag == NULL) {
        fprintf(stderr,
                "WARNING!  Server attempted unauthorized read of file %s\n",
                p);
        return;
     }
-    if (p == NULL) {
-       fprintf(stderr, "Null file to execute\n");
-       free(tag);
+    free(tag);
+
+    p = fname(p);
+    if (*p == 0) {
+       fprintf(stderr, "Need a file to execute\n");
        return;
     }
     if ((fd = open(p, O_RDONLY, 0)) < 0) {
-       fprintf(stderr, "Can't open execute file\n");
-       perror(p);
-       free(tag);
+       fprintf(stderr, "Can't open execute file %s: %s\n",
+               p, strerror(errno));
        return;
     }
     /* copies 4k at a time to the socket */
@@ -296,7 +295,6 @@ doexecute(char *p, FILE *auxfi)
      * sendeof(sock);
      */
     close(fd);
-    free(tag);
 }
 
 static void