summaryrefslogtreecommitdiff
path: root/ext/session/mod_mm.c
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>2000-11-03 12:00:49 +0000
committerSascha Schumann <sas@php.net>2000-11-03 12:00:49 +0000
commit0feb2a21e5d4c3f6466e78cd6509076e41b45d37 (patch)
tree4fc6753ee7e2ef2e772232656349e8d7e9626686 /ext/session/mod_mm.c
parentb4ce4e26340e9ef7effb3a3b1f7610d01827d185 (diff)
downloadphp-git-0feb2a21e5d4c3f6466e78cd6509076e41b45d37.tar.gz
Add some additional checks
Submitted by: mookid@sigent.ru (Mikhail Zabaluev)
Diffstat (limited to 'ext/session/mod_mm.c')
-rw-r--r--ext/session/mod_mm.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c
index c3e4d5ad06..355c991e7e 100644
--- a/ext/session/mod_mm.c
+++ b/ext/session/mod_mm.c
@@ -176,8 +176,15 @@ ps_module ps_mod_mm = {
static int ps_mm_initialize(ps_mm *data, const char *path)
{
data->mm = mm_create(0, path);
+ if (!data->mm) {
+ return FAILURE;
+ }
data->hash = mm_calloc(data->mm, HASH_SIZE, sizeof(*data->hash));
+ if (!data->hash) {
+ mm_destroy(data->mm);
+ return FAILURE;
+ }
return SUCCESS;
}
@@ -200,15 +207,21 @@ static void ps_mm_destroy(ps_mm *data)
PHP_GINIT_FUNCTION(ps_mm)
{
ps_mm_instance = calloc(sizeof(*ps_mm_instance), 1);
- ps_mm_initialize(ps_mm_instance, PS_MM_PATH);
+ if (ps_mm_initialize(ps_mm_instance, PS_MM_PATH) != SUCCESS) {
+ ps_mm_instance = NULL;
+ return FAILURE;
+ }
return SUCCESS;
}
PHP_GSHUTDOWN_FUNCTION(ps_mm)
{
- ps_mm_destroy(ps_mm_instance);
- free(ps_mm_instance);
- return SUCCESS;
+ if (ps_mm_instance) {
+ ps_mm_destroy(ps_mm_instance);
+ free(ps_mm_instance);
+ return SUCCESS;
+ }
+ return FAILURE;
}
PS_OPEN_FUNC(mm)