d2436927691ce4b821d1abbf2095ce90d9e10d72
[packages/xinetd.git] / debian / patches / 0003-Various-fixes-from-the-previous-maintainer.patch
1 From a3410b0bc81ab03a889d9ffc14e351badf8372f1 Mon Sep 17 00:00:00 2001
2 From: Pierre Habouzit <madcoder@debian.org>
3 Date: Mon, 26 Nov 2007 16:02:04 +0100
4 Subject: [PATCH] Various fixes from the previous maintainer.
5
6 ---
7  xinetd/child.c   |   20 +++++++++++++++++---
8  xinetd/service.c |    8 ++++----
9  2 files changed, 21 insertions(+), 7 deletions(-)
10
11 diff --git a/xinetd/child.c b/xinetd/child.c
12 index 89ee54c..48e9615 100644
13 --- a/xinetd/child.c
14 +++ b/xinetd/child.c
15 @@ -284,6 +284,7 @@ void child_process( struct server *serp )
16     connection_s            *cp  = SERVER_CONNECTION( serp ) ;
17     struct service_config   *scp = SVC_CONF( sp ) ;
18     const char              *func = "child_process" ;
19 +   int                     fd, null_fd;
20  
21     signal_default_state();
22  
23 @@ -296,9 +297,22 @@ void child_process( struct server *serp )
24     signals_pending[0] = -1;
25     signals_pending[1] = -1;
26  
27 -   Sclose(0);
28 -   Sclose(1);
29 -   Sclose(2);
30 +   if ( ( null_fd = open( "/dev/null", O_RDONLY ) ) == -1 )
31 +   {
32 +      msg( LOG_ERR, func, "open('/dev/null') failed: %m") ;
33 +      _exit( 1 ) ;
34 +   }
35 +
36 +   for ( fd = 0 ; fd <= MAX_PASS_FD ; fd++ )
37 +   {
38 +      if ( fd != null_fd && dup2( null_fd, fd ) == -1 )
39 +      {
40 +         msg( LOG_ERR, func, "dup2(%d, %d) failed: %m") ;
41 +         _exit( 1 ) ;
42 +      }
43 +   }
44 +   if ( null_fd > MAX_PASS_FD )
45 +      (void) Sclose( null_fd ) ;
46  
47  
48  #ifdef DEBUG_SERVER
49 diff --git a/xinetd/service.c b/xinetd/service.c
50 index 3d68d78..0132d6c 100644
51 --- a/xinetd/service.c
52 +++ b/xinetd/service.c
53 @@ -745,8 +745,8 @@ static status_e failed_service(struct service *sp,
54                 return FAILED;
55  
56              if ( last == NULL ) {
57 -               last = SAIN( calloc( 1, sizeof(union xsockaddr) ) );
58 -              SVC_LAST_DGRAM_ADDR(sp) = (union xsockaddr *)last;
59 +           SVC_LAST_DGRAM_ADDR(sp) =  SAIN( calloc( 1, sizeof(union xsockaddr) ) );
60 +           last = SAIN( SVC_LAST_DGRAM_ADDR(sp) );
61              }
62  
63              (void) time( &current_time ) ;
64 @@ -772,8 +772,8 @@ static status_e failed_service(struct service *sp,
65                 return FAILED;
66  
67             if( last == NULL ) {
68 -               last = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
69 -              SVC_LAST_DGRAM_ADDR( sp ) = (union xsockaddr *)last;
70 +           SVC_LAST_DGRAM_ADDR(sp) = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
71 +            last = SAIN6(SVC_LAST_DGRAM_ADDR(sp));
72              }
73  
74              (void) time( &current_time ) ;
75 -- 
76 1.5.3.6.2040.g15e6
77