kopia lustrzana https://gitlab.com/sane-project/backends
Make sure backends can't break the network dialog and crash the remote net
backend by writing to stdin/stdout/stderr.merge-requests/1/head
rodzic
135ac7d1ac
commit
b72c29cd75
|
@ -1,3 +1,8 @@
|
||||||
|
2009-03-02 Julien Blache <jb@jblache.org>
|
||||||
|
* frontend/saned.c: work around backends that can't keep their
|
||||||
|
dirty fingers off stdin/stdout/stderr when run through inetd,
|
||||||
|
breaking the network dialog and crashing the remote net backend.
|
||||||
|
|
||||||
2009-02-28 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
|
2009-02-28 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
|
||||||
* m4/byteorder.m4: Delete temporary file in all cases.
|
* m4/byteorder.m4: Delete temporary file in all cases.
|
||||||
* backend/Makefile.am, japi/Makefile.am: Use BUILT_SOURCES
|
* backend/Makefile.am, japi/Makefile.am: Use BUILT_SOURCES
|
||||||
|
|
|
@ -3112,6 +3112,41 @@ static void
|
||||||
run_inetd (int argc, char **argv)
|
run_inetd (int argc, char **argv)
|
||||||
{
|
{
|
||||||
int fd = 1;
|
int fd = 1;
|
||||||
|
int dave_null;
|
||||||
|
|
||||||
|
/* Some backends really can't keep their dirty fingers off
|
||||||
|
* stdin/stdout/stderr; we work around them here so they don't
|
||||||
|
* mess up the network dialog and crash the remote net backend.
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
fd = dup (fd);
|
||||||
|
|
||||||
|
if (fd == -1)
|
||||||
|
{
|
||||||
|
DBG (DBG_ERR, "run_inetd: duplicating fd failed: %s", strerror (errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (fd < 3);
|
||||||
|
|
||||||
|
/* Our good'ole friend Dave Null to the rescue */
|
||||||
|
dave_null = open ("/dev/null", O_RDWR);
|
||||||
|
if (dave_null < 0)
|
||||||
|
{
|
||||||
|
DBG (DBG_ERR, "run_inetd: could not open /dev/null: %s", strerror (errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
close (STDIN_FILENO);
|
||||||
|
close (STDOUT_FILENO);
|
||||||
|
close (STDERR_FILENO);
|
||||||
|
|
||||||
|
dup2 (dave_null, STDIN_FILENO);
|
||||||
|
dup2 (dave_null, STDOUT_FILENO);
|
||||||
|
dup2 (dave_null, STDERR_FILENO);
|
||||||
|
|
||||||
|
close (dave_null);
|
||||||
|
|
||||||
#ifndef HAVE_OS2_H
|
#ifndef HAVE_OS2_H
|
||||||
/* Unused in this function */
|
/* Unused in this function */
|
||||||
|
|
Ładowanie…
Reference in New Issue