common: Raise an error correctly in check_special_filename.

* common/sysutils.c (check_special_filename): Use gnupg_parse_fdstr
to check an error.

--

GnuPG-bug-id: 6551
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2023-06-29 14:01:40 +09:00
parent cacb018992
commit 3672c29156
No known key found for this signature in database
GPG Key ID: 640114AF89DE6054
1 changed files with 21 additions and 2 deletions

View File

@ -656,8 +656,27 @@ check_special_filename (const char *fname, int for_write, int notranslate)
for (i=0; digitp (fname+i); i++ )
;
if (!fname[i])
return notranslate? atoi (fname)
/**/ : translate_sys2libc_fd_int (atoi (fname), for_write);
{
if (notranslate)
return atoi (fname);
else
{
es_syshd_t syshd;
if (gnupg_parse_fdstr (fname, &syshd))
return -1;
#ifdef HAVE_W32_SYSTEM
if (syshd.type == ES_SYSHD_FD)
return syshd.u.fd;
else
return translate_sys2libc_fd ((gnupg_fd_t)syshd.u.handle, for_write);
#else
(void)for_write;
return syshd.u.fd;
#endif
}
}
}
return -1;
}