53 lines
1.9 KiB
Diff
53 lines
1.9 KiB
Diff
|
Index: thttpd-2.25b/libhttpd.c
|
||
|
===================================================================
|
||
|
--- thttpd-2.25b.orig/libhttpd.c 2013-03-04 18:01:55.209721739 +0100
|
||
|
+++ thttpd-2.25b/libhttpd.c 2013-03-04 18:01:55.244722735 +0100
|
||
|
@@ -1024,6 +1024,7 @@ auth_check2( httpd_conn* hc, char* dirna
|
||
|
static size_t maxprevuser = 0;
|
||
|
static char* prevcryp;
|
||
|
static size_t maxprevcryp = 0;
|
||
|
+ char *crypt_result;
|
||
|
|
||
|
/* Construct auth filename. */
|
||
|
httpd_realloc_str(
|
||
|
@@ -1072,7 +1073,10 @@ auth_check2( httpd_conn* hc, char* dirna
|
||
|
strcmp( authinfo, prevuser ) == 0 )
|
||
|
{
|
||
|
/* Yes. Check against the cached encrypted password. */
|
||
|
- if ( strcmp( crypt( authpass, prevcryp ), prevcryp ) == 0 )
|
||
|
+ crypt_result = crypt( authpass, prevcryp );
|
||
|
+ if ( ! crypt_result )
|
||
|
+ return -1;
|
||
|
+ if ( strcmp( crypt_result, prevcryp ) == 0 )
|
||
|
{
|
||
|
/* Ok! */
|
||
|
httpd_realloc_str(
|
||
|
@@ -1121,7 +1125,10 @@ auth_check2( httpd_conn* hc, char* dirna
|
||
|
/* Yes. */
|
||
|
(void) fclose( fp );
|
||
|
/* So is the password right? */
|
||
|
- if ( strcmp( crypt( authpass, cryp ), cryp ) == 0 )
|
||
|
+ crypt_result = crypt( authpass, cryp );
|
||
|
+ if ( ! crypt_result )
|
||
|
+ return -1;
|
||
|
+ if ( strcmp( crypt_result, cryp ) == 0 )
|
||
|
{
|
||
|
/* Ok! */
|
||
|
httpd_realloc_str(
|
||
|
Index: thttpd-2.25b/extras/htpasswd.c
|
||
|
===================================================================
|
||
|
--- thttpd-2.25b.orig/extras/htpasswd.c 2013-03-04 18:01:55.226722223 +0100
|
||
|
+++ thttpd-2.25b/extras/htpasswd.c 2013-03-04 18:02:15.755306445 +0100
|
||
|
@@ -133,7 +133,10 @@ add_password( char* user, FILE* f )
|
||
|
(void) srandom( (int) time( (time_t*) 0 ) );
|
||
|
to64( &salt[0], random(), 2 );
|
||
|
cpw = crypt( pw, salt );
|
||
|
- (void) fprintf( f, "%s:%s\n", user, cpw );
|
||
|
+ if (cpw)
|
||
|
+ (void) fprintf( f, "%s:%s\n", user, cpw );
|
||
|
+ else
|
||
|
+ (void) fprintf( stderr, "crypt() returned NULL, sorry\n" );
|
||
|
}
|
||
|
|
||
|
static void usage(void) {
|