php-src/main/php_globals.h
Ilija Tovilo 127ad70782
Fix open_basedir leak
Fixes oss-fuzz #60741
Closes GH-11780
2023-07-25 17:54:14 +02:00

179 lines
3.9 KiB
C

/*
+----------------------------------------------------------------------+
| Copyright (c) The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 3.01 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| https://www.php.net/license/3_01.txt |
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Zeev Suraski <zeev@php.net> |
+----------------------------------------------------------------------+
*/
#ifndef PHP_GLOBALS_H
#define PHP_GLOBALS_H
#include "zend_globals.h"
#include <stdint.h>
typedef struct _php_core_globals php_core_globals;
#ifdef ZTS
# define PG(v) ZEND_TSRMG_FAST(core_globals_offset, php_core_globals *, v)
extern PHPAPI int core_globals_id;
extern PHPAPI size_t core_globals_offset;
#else
# define PG(v) (core_globals.v)
extern ZEND_API struct _php_core_globals core_globals;
#endif
/* Error display modes */
#define PHP_DISPLAY_ERRORS_STDOUT 1
#define PHP_DISPLAY_ERRORS_STDERR 2
/* Track vars */
#define TRACK_VARS_POST 0
#define TRACK_VARS_GET 1
#define TRACK_VARS_COOKIE 2
#define TRACK_VARS_SERVER 3
#define TRACK_VARS_ENV 4
#define TRACK_VARS_FILES 5
#define TRACK_VARS_REQUEST 6
struct _php_tick_function_entry;
typedef struct _arg_separators {
char *output;
char *input;
} arg_separators;
struct _php_core_globals {
zend_long output_buffering;
bool implicit_flush;
bool enable_dl;
uint8_t display_errors;
bool display_startup_errors;
bool log_errors;
bool ignore_repeated_errors;
bool ignore_repeated_source;
bool report_memleaks;
char *output_handler;
char *unserialize_callback_func;
zend_long serialize_precision;
zend_long memory_limit;
zend_long max_input_time;
char *error_log;
char *doc_root;
char *user_dir;
char *include_path;
char *open_basedir;
bool open_basedir_modified;
char *extension_dir;
char *php_binary;
char *sys_temp_dir;
char *upload_tmp_dir;
zend_long upload_max_filesize;
char *error_append_string;
char *error_prepend_string;
char *auto_prepend_file;
char *auto_append_file;
char *input_encoding;
char *internal_encoding;
char *output_encoding;
arg_separators arg_separator;
char *variables_order;
HashTable rfc1867_protected_variables;
short connection_status;
bool ignore_user_abort;
unsigned char header_is_being_sent;
zend_llist tick_functions;
zval http_globals[6];
bool expose_php;
bool register_argc_argv;
bool auto_globals_jit;
bool html_errors;
bool xmlrpc_errors;
char *docref_root;
char *docref_ext;
zend_long xmlrpc_error_number;
bool activated_auto_globals[8];
bool modules_activated;
bool file_uploads;
bool during_request_startup;
bool allow_url_fopen;
bool enable_post_data_reading;
bool report_zend_debug;
int last_error_type;
int last_error_lineno;
zend_string *last_error_message;
zend_string *last_error_file;
char *php_sys_temp_dir;
char *disable_classes;
zend_long max_input_nesting_level;
zend_long max_input_vars;
char *user_ini_filename;
zend_long user_ini_cache_ttl;
char *request_order;
char *mail_log;
bool mail_x_header;
bool mail_mixed_lf_and_crlf;
bool in_error_log;
bool allow_url_include;
#ifdef PHP_WIN32
bool com_initialized;
#endif
bool in_user_include;
#ifdef PHP_WIN32
bool windows_show_crt_warning;
#endif
bool have_called_openlog;
zend_long syslog_facility;
char *syslog_ident;
zend_long syslog_filter;
zend_long error_log_mode;
};
#endif /* PHP_GLOBALS_H */