]> git.pond.sub.org Git - empserver/commitdiff
Fix execute not to mangle the argument when it prompts for it
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 2 Jul 2011 08:04:07 +0000 (10:04 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 9 Jul 2011 13:16:21 +0000 (15:16 +0200)
The argument is UTF-8.  If it's missing, execute() gets it with
getstring(), which mangles non-ASCII characters.  Clients reject
mangled file names for security reasons.

Fix by switching to ugetstring().  Missed in commit 69832255, v4.3.11.

Non-ASCII characters are still mangled in ASCII sessions, but that's
not expected to work.

src/lib/player/player.c

index eb87f78838c067bffdf2bb8a25da1ac65d0ca01d..9b8d37a417872519d873de346a89e37fd38762fb 100644 (file)
@@ -242,18 +242,17 @@ make_stale_if_command_arg(char *arg)
 int
 execute(void)
 {
 int
 execute(void)
 {
-    char buf[1024];
+    char buf[1024];            /* UTF-8 */
     int failed;
     int failed;
-    char *p;
+    char *p;                   /* UTF-8 */
     char *redir;               /* UTF-8 */
     char scanspace[1024];
 
     failed = 0;
 
     char *redir;               /* UTF-8 */
     char scanspace[1024];
 
     failed = 0;
 
-    if (player->comtail[1])
-       p = player->comtail[1];
-    else
-       p = getstring("File? ", buf);
+    p = player->comtail[1];
+    if (!p)
+       p = ugetstring("File? ", buf);
     if (p == NULL || *p == '\0')
        return RET_SYN;
     prexec(p);
     if (p == NULL || *p == '\0')
        return RET_SYN;
     prexec(p);