summaryrefslogtreecommitdiff
path: root/src/sp_upload_validation.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp_upload_validation.c')
-rw-r--r--src/sp_upload_validation.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/sp_upload_validation.c b/src/sp_upload_validation.c
index d04dce4..086723d 100644
--- a/src/sp_upload_validation.c
+++ b/src/sp_upload_validation.c
@@ -21,31 +21,31 @@ int sp_rfc1867_callback(unsigned int event, void *event_data, void **extra) {
21 21
22 if (event == MULTIPART_EVENT_END) { 22 if (event == MULTIPART_EVENT_END) {
23 zend_string *file_key __attribute__((unused)) = NULL; 23 zend_string *file_key __attribute__((unused)) = NULL;
24 const sp_config_upload_validation* config_upload = 24 const sp_config_upload_validation *config_upload =
25 SNUFFLEUPAGUS_G(config).config_upload_validation; 25 SNUFFLEUPAGUS_G(config).config_upload_validation;
26 zval *file; 26 zval *file;
27 pid_t pid; 27 pid_t pid;
28 28
29 sp_log_debug("Got %d files", 29 sp_log_debug(
30 "Got %d files",
30 zend_hash_num_elements(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]))); 31 zend_hash_num_elements(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES])));
31 32
32 ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]), 33 ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]),
33 file_key, file) { // for each uploaded file 34 file_key, file) { // for each uploaded file
34 35
35 char *filename = 36 char *filename = Z_STRVAL_P(
36 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "name", sizeof("name") - 1)); 37 zend_hash_str_find(Z_ARRVAL_P(file), "name", sizeof("name") - 1));
37 char *tmp_name = 38 char *tmp_name = Z_STRVAL_P(zend_hash_str_find(
38 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "tmp_name", sizeof("tmp_name") - 1)); 39 Z_ARRVAL_P(file), "tmp_name", sizeof("tmp_name") - 1));
39 size_t filesize = 40 size_t filesize = Z_LVAL_P(
40 Z_LVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "size", sizeof("size") - 1)); 41 zend_hash_str_find(Z_ARRVAL_P(file), "size", sizeof("size") - 1));
41 char *cmd[3] = {0}; 42 char *cmd[3] = {0};
42 char *env[5] = {0}; 43 char *env[5] = {0};
43 44
44 sp_log_debug( 45 sp_log_debug("Filename: %s\nTmpname: %s\nSize: %d\nError: %d\nScript: %s",
45 "Filename: %s\nTmpname: %s\nSize: %d\nError: %d\nScript: %s", 46 filename, tmp_name, filesize,
46 filename, tmp_name, filesize, 47 Z_LVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "error", 5)),
47 Z_LVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "error", 5)), 48 ZSTR_VAL(config_upload->script));
48 ZSTR_VAL(config_upload->script));
49 49
50 cmd[0] = ZSTR_VAL(config_upload->script); 50 cmd[0] = ZSTR_VAL(config_upload->script);
51 cmd[1] = tmp_name; 51 cmd[1] = tmp_name;
@@ -60,10 +60,8 @@ int sp_rfc1867_callback(unsigned int event, void *event_data, void **extra) {
60 60
61 if ((pid = fork()) == 0) { 61 if ((pid = fork()) == 0) {
62 if (execve(ZSTR_VAL(config_upload->script), cmd, env) == -1) { 62 if (execve(ZSTR_VAL(config_upload->script), cmd, env) == -1) {
63 sp_log_warn( 63 sp_log_warn("upload_validation", "Could not call '%s' : %s",
64 "upload_validation", "Could not call '%s' : %s", 64 ZSTR_VAL(config_upload->script), strerror(errno));
65 ZSTR_VAL(config_upload->script),
66 strerror(errno));
67 EFREE_3(env); 65 EFREE_3(env);
68 exit(1); 66 exit(1);
69 } 67 }