From 73cbc6c3081be203efaf365cce19fcc91d493c14 Mon Sep 17 00:00:00 2001 From: Ben Fuhrmannek Date: Mon, 18 Aug 2014 12:29:18 +0200 Subject: extra null checks --- log.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/log.c b/log.c index 3edc119..788478a 100644 --- a/log.c +++ b/log.c @@ -112,7 +112,7 @@ PHP_SUHOSIN_API void suhosin_log(int loglevel, char *fmt, ...) char *ip_address; char *fname; char *alertstring; - int lineno; + int lineno = 0; va_list ap; TSRMLS_FETCH(); @@ -160,12 +160,15 @@ PHP_SUHOSIN_API void suhosin_log(int loglevel, char *fmt, ...) if (zend_is_executing(TSRMLS_C)) { zend_execute_data *exdata = EG(current_execute_data); if (exdata) { - if (getcaller && exdata->prev_execute_data) { + if (getcaller && exdata->prev_execute_data && exdata->prev_execute_data->opline && exdata->prev_execute_data->op_array) { lineno = exdata->prev_execute_data->opline->lineno; - fname = (char *)exdata->prev_execute_data->op_array->filename; - } else { + fname = (char *)exdata->prev_execute_data->op_array->filename; + } else if (exdata->opline && exdata->op_array) { lineno = exdata->opline->lineno; - fname = (char *)exdata->op_array->filename; + fname = (char *)exdata->op_array->filename; + } else { + lineno = 0; + fname = "[unknown filename]"; } } else { lineno = zend_get_executed_lineno(TSRMLS_C); -- cgit v1.3