cvs: php-src(PHP_5_2) / NEWS acinclude.m4 configure.in /ext/standard crypt.c

From: Date: Tue, 12 Dec 2006 07:38:04 +0000
Subject: cvs: php-src(PHP_5_2) / NEWS acinclude.m4 configure.in /ext/standard crypt.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-42058@lists.php.net to get a copy of this message
tony2001 Tue Dec 12 07:38:04 2006 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS configure.in acinclude.m4 /php-src/ext/standard crypt.c Log: MFH: fix #39795 (build fails on AIX because crypt_r() uses different data struct) http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.425&r2=1.2027.2.547.2.426&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.425 php-src/NEWS:1.2027.2.547.2.426 --- php-src/NEWS:1.2027.2.547.2.425 Mon Dec 11 21:04:40 2006 +++ php-src/NEWS Tue Dec 12 07:38:04 2006 @@ -50,6 +50,8 @@ - Fixed FastCGI impersonation for persistent connections on Windows. (Dmitry) - Fixed wrong signature initialization in imagepng (Takeshi Abe) - Added optimization for imageline with horizontal and vertial lines (Pierre) +- Fixed bug #39795 (build fails on AIX because crypt_r() uses different data + struct). (Tony) - Fixed bug #39791 (Crash in strtotime() on overly long relative date multipliers). (Ilia) - Fixed bug #39787 (PHP doesn't work with Apache 2.3). (mv at binarysec dot http://cvs.php.net/viewvc.cgi/php-src/configure.in?r1=1.579.2.52.2.29&r2=1.579.2.52.2.30&diff_format=u Index: php-src/configure.in diff -u php-src/configure.in:1.579.2.52.2.29 php-src/configure.in:1.579.2.52.2.30 --- php-src/configure.in:1.579.2.52.2.29 Tue Dec 5 08:07:56 2006 +++ php-src/configure.in Tue Dec 12 07:38:04 2006 @@ -1,4 +1,4 @@ - ## $Id: configure.in,v 1.579.2.52.2.29 2006/12/05 08:07:56 dmitry Exp $ -*- autoconf -*- + ## $Id: configure.in,v 1.579.2.52.2.30 2006/12/12 07:38:04 tony2001 Exp $ -*- autoconf -*- dnl ## Process this file with autoconf to produce a configure script. divert(1) @@ -467,7 +467,6 @@ ctime_r \ cuserid \ crypt \ -crypt_r \ flock \ ftok \ funopen \ @@ -600,6 +599,11 @@ PHP_READDIR_R_TYPE PHP_CHECK_IN_ADDR_T +AC_CHECK_FUNCS(crypt_r, [ php_crypt_r="1" ], [ php_crypt_r="0" ]) +if test "x$php_crypt_r" = "x1"; then + PHP_CRYPT_R_STYLE +fi + divert(4) dnl ## In diversion 4 we check user-configurable general settings. http://cvs.php.net/viewvc.cgi/php-src/acinclude.m4?r1=1.332.2.14.2.6&r2=1.332.2.14.2.7&diff_format=u Index: php-src/acinclude.m4 diff -u php-src/acinclude.m4:1.332.2.14.2.6 php-src/acinclude.m4:1.332.2.14.2.7 --- php-src/acinclude.m4:1.332.2.14.2.6 Mon Dec 4 18:28:49 2006 +++ php-src/acinclude.m4 Tue Dec 12 07:38:04 2006 @@ -1,5 +1,5 @@ dnl -dnl $Id: acinclude.m4,v 1.332.2.14.2.6 2006/12/04 18:28:49 tony2001 Exp $ +dnl $Id: acinclude.m4,v 1.332.2.14.2.7 2006/12/12 07:38:04 tony2001 Exp $ dnl dnl This file contains local autoconf functions. dnl @@ -2590,3 +2590,55 @@ ) ]) +dnl +dnl PHP_CRYPT_R_STYLE +dnl detect the style of crypt_r() is any is available +dnl see APR_CHECK_CRYPT_R_STYLE() for original version +dnl +AC_DEFUN([PHP_CRYPT_R_STYLE], +[ + AC_CACHE_CHECK([which data struct is used by crypt_r], php_cv_crypt_r_style,[ + php_cv_crypt_r_style=none + AC_TRY_COMPILE([ +#include <crypt.h> +],[ +CRYPTD buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=cryptd) + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#include <crypt.h> +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data) + fi + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include <crypt.h> +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data_gnu_source) + fi + ]) + + if test "$php_cv_crypt_r_style" = "cryptd"; then + AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data" -o "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_GNU_SOURCE, 1, [Define if struct crypt_data requires _GNU_SOURCE]) + fi + if test "$php_cv_crypt_r_style" = "none"; then + AC_MSG_ERROR([Unable to detect data struct is used by crypt_r]) + fi +]) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/crypt.c?r1=1.62.2.1.2.2&r2=1.62.2.1.2.3&diff_format=u Index: php-src/ext/standard/crypt.c diff -u php-src/ext/standard/crypt.c:1.62.2.1.2.2 php-src/ext/standard/crypt.c:1.62.2.1.2.3 --- php-src/ext/standard/crypt.c:1.62.2.1.2.2 Sun Dec 3 13:46:37 2006 +++ php-src/ext/standard/crypt.c Tue Dec 12 07:38:04 2006 @@ -17,7 +17,7 @@ | Rasmus Lerdorf <rasmus@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: crypt.c,v 1.62.2.1.2.2 2006/12/03 13:46:37 tony2001 Exp $ */ +/* $Id: crypt.c,v 1.62.2.1.2.3 2006/12/12 07:38:04 tony2001 Exp $ */ #include <stdlib.h> #include "php.h" @@ -28,6 +28,9 @@ #include <unistd.h> #endif #if HAVE_CRYPT_H +#if defined(CRYPT_R_GNU_SOURCE) && !defined(_GNU_SOURCE) +#define _GNU_SOURCE +#endif #include <crypt.h> #endif #if TM_IN_SYS_TIME @@ -147,8 +150,15 @@ } #ifdef HAVE_CRYPT_R { +#if defined(CRYPT_R_STRUCT_CRYPT_DATA) struct crypt_data buffer; memset(&buffer, 0, sizeof(buffer)); +#elif defined(CRYPT_R_CRYPTD) + CRYPTD buffer; +#else +#error Data struct used by crypt_r() is unknown. Please report. +#endif + RETURN_STRING(crypt_r(str, salt, &buffer), 1); } #else

« previous php.cvs (#42058) next »