#30891 [Opn]: mcrypt_generic_init() not returning negative integer on error
| From: | brian_bisaillon at rogers dot com | Date: | Thu, 25 Nov 2004 04:08:15 +0000 |
| Subject: | #30891 [Opn]: mcrypt_generic_init() not returning negative integer on error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-69432@lists.php.net to get a copy of this message | ||
ID: 30891
User updated by: brian_bisaillon at rogers dot com
Reported By: brian_bisaillon at rogers dot com
Status: Open
Bug Type: mcrypt related
Operating System: SuSE Linux 9.1
PHP Version: 5.0.2
New Comment:
My error checking for -3 worked so it's setting a negative integer when
I supply an invalid $encryptionKey. However, the problem is with
returning negative integers for "unknown errors" such as an invalid
MCrypt resource. In those situations, it doesn't return a negative
integer like it's supposed to.
Previous Comments:
------------------------------------------------------------------------
[2004-11-25 05:00:28] brian_bisaillon at rogers dot com
Description:
------------
./configure --prefix=/opt/php
--with-apxs2=/opt/apache/bin/apxs \
--with-mod_charset --disable-cgi --enable-magic-quotes
--with-openssl \
--with-libxml-dir=/usr/lib --with-zlib --enable-bcmath
--with-bz2 \
--enable-calendar --with-jpeg-dir=/usr/lib
--with-tiff-dir=/usr/lib \
--with-curl --with-curlwrappers --with-db4 --with-cdb
--with-inifile \
--with-flatfile --enable-dbase --enable-dbx --enable-dio
--with-fam \
--enable-filepro --enable-ftp --with-gd
--with-png-dir=/usr/lib \
--with-xpm-dir=/usr/lib --with-ttf
--with-freetype-dir=/usr/lib \
--with-gettext --with-gmp --with-kerberos --with-ldap
--with-ldap-sasl \
--enable-mbstring --with-mcrypt --with-mhash
--with-mysql=/opt/mysql \
--with-mysqli=/opt/mysql/bin/mysql_config --with-ncurses
--with-unixODBC \
--with-pgsql=/opt/postgresql --with-readline
--enable-shmop --with-snmp \
--enable-ucd-snmp-hack --enable-soap --enable-sockets \
--enable-sqlite-utf8 --enable-sysvmsg --enable-sysvsem
--enable-sysvshm \
--with-tidy=/usr --enable-wddx --with-xmlrpc --with-xsl
--enable-yp \
--enable-maintainer-zts --enable-memory-limit
--enable-zend-multibyte \
--with-tsrm-pthreads
Reproduce code:
---------------
$returnValue =
@mcrypt_generic_init($this->encryptionDescriptor, $encryptionKey,
$this->SetRandomIv());
if (0 == intval($returnValue) && -3 !== $returnValue && -4
!== $returnValue) {
throw new Exception("<h1>\n Initialization
Failed\n</h1>\n<strong>Fatal:</strong> mcrypt_generic_init(): An
unknown error occurred : phpwebtk.cryptography.Crypt.Exception
<strong>");
} else if (-3 == $returnValue) {
throw new Exception("<h1>\n Initialization
Failed\n</h1>\n<strong>Fatal:</strong> mcrypt_generic_init(): The key
length was incorrect : phpwebtk.cryptography.Crypt.Exception
<strong>");
} else if (-4 == $returnValue) {
throw new Exception("<h1>\n Initialization
Failed\n</h1>\n<strong>Fatal:</strong> mcrypt_generic_init(): There was
a memory allocation problem : phpwebtk.cryptography.Crypt.Exception
<strong>");
} else {
$ciphertext =
mcrypt_generic($this->encryptionDescriptor, $plaintext);
mcrypt_generic_deinit($this->encryptionDescriptor);
$this->CloseModule();
}
Expected result:
----------------
I expected the $returnValue to be a negative integer since
I gave a bogus $this->encryptionDescriptor and according
to the PHP manual, mcrypt_generic_init is supposed to
return a negative integer on error.
Actual result:
--------------
$returnValue was null despite the fact that
$this->encryptionDescriptor was invalid. It showed the
warning but I want to throw my own custom exception and
use the @mcrypt_generic_init() syntax to hide the default
warning. I cannot do that if a negative integer is not
being returned upon an error.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30891&edit=1