57 lines
1.8 KiB
Diff
57 lines
1.8 KiB
Diff
From d2e186dbd58d274a0dea9b59357edc8498b5388d Mon Sep 17 00:00:00 2001
|
|
From: "Anthony G. Basile" <blueness@gentoo.org>
|
|
Date: Tue, 26 Feb 2013 14:28:26 -0500
|
|
Subject: [PATCH] src/thttpd.c: Fix world readable log, CVE-2013-0348.
|
|
|
|
Make sure that the logfile is created or reopened as read/write
|
|
by thttpd user only.
|
|
|
|
X-gentoo-Bug: 458896
|
|
X-gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=458896
|
|
Reported-by: Agostino Sarubbo <ago@gentoo.org>
|
|
Signed-off-by: Anthony G. Basile <basile@opensource.dyc.edu>
|
|
---
|
|
src/thttpd.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
Index: thttpd-2.25b/thttpd.c
|
|
===================================================================
|
|
--- thttpd-2.25b.orig/thttpd.c 2013-12-03 15:38:31.719334530 +0100
|
|
+++ thttpd-2.25b/thttpd.c 2013-12-03 15:38:31.754334893 +0100
|
|
@@ -331,6 +331,7 @@ static void
|
|
re_open_logfile( void )
|
|
{
|
|
FILE* logfp;
|
|
+ int retchmod;
|
|
|
|
if ( no_log || hs == (httpd_server*) 0 )
|
|
return;
|
|
@@ -340,7 +341,8 @@ re_open_logfile( void )
|
|
{
|
|
syslog( LOG_NOTICE, "re-opening logfile" );
|
|
logfp = fopen( logfile, "a" );
|
|
- if ( logfp == (FILE*) 0 )
|
|
+ retchmod = chmod( logfile, S_IRUSR|S_IWUSR );
|
|
+ if ( logfp == (FILE*) 0 || retchmod != 0 )
|
|
{
|
|
syslog( LOG_CRIT, "re-opening %.80s - %m", logfile );
|
|
return;
|
|
@@ -360,6 +362,7 @@ main( int argc, char** argv )
|
|
gid_t gid = 32767;
|
|
char cwd[MAXPATHLEN+1];
|
|
FILE* logfp;
|
|
+ int retchmod;
|
|
int num_ready;
|
|
int cnum;
|
|
connecttab* c;
|
|
@@ -429,7 +432,8 @@ main( int argc, char** argv )
|
|
else
|
|
{
|
|
logfp = fopen( logfile, "a" );
|
|
- if ( logfp == (FILE*) 0 )
|
|
+ retchmod = chmod( logfile, S_IRUSR|S_IWUSR );
|
|
+ if ( logfp == (FILE*) 0 || retchmod != 0 )
|
|
{
|
|
syslog( LOG_CRIT, "%.80s - %m", logfile );
|
|
perror( logfile );
|