summaryrefslogtreecommitdiff
path: root/src/sp_upload_validation.c
diff options
context:
space:
mode:
authorxXx-caillou-xXx2018-08-30 17:14:08 +0200
committerjvoisin2018-08-30 15:14:08 +0000
commit206ffa3fb3fd72c6a2eb45194fb176535a91288c (patch)
tree23a25d83c4ca878861f413a0d5df2ad77c7dadaf /src/sp_upload_validation.c
parentb3f67a16094168cc334f5da93a86f09476e01601 (diff)
Minor code cleanup
Diffstat (limited to 'src/sp_upload_validation.c')
-rw-r--r--src/sp_upload_validation.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/sp_upload_validation.c b/src/sp_upload_validation.c
index c079e41..6fa721e 100644
--- a/src/sp_upload_validation.c
+++ b/src/sp_upload_validation.c
@@ -21,22 +21,23 @@ 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 =
25 SNUFFLEUPAGUS_G(config).config_upload_validation;
24 zval *file; 26 zval *file;
25 pid_t pid; 27 pid_t pid;
26 28
27 sp_log_debug( 29 sp_log_debug("Got %d files",
28 "Got %d files",
29 zend_hash_num_elements(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]))); 30 zend_hash_num_elements(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES])));
30 31
31 ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]), 32 ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL(PG(http_globals)[TRACK_VARS_FILES]),
32 file_key, file) { // for each uploaded file 33 file_key, file) { // for each uploaded file
33 34
34 char *filename = 35 char *filename =
35 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "name", 4)); 36 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "name", sizeof("name") - 1));
36 char *tmp_name = 37 char *tmp_name =
37 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "tmp_name", 8)); 38 Z_STRVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "tmp_name", sizeof("tmp_name") - 1));
38 size_t filesize = 39 size_t filesize =
39 Z_LVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "size", 4)); 40 Z_LVAL_P(zend_hash_str_find(Z_ARRVAL_P(file), "size", sizeof("size") - 1));
40 char *cmd[3] = {0}; 41 char *cmd[3] = {0};
41 char *env[5] = {0}; 42 char *env[5] = {0};
42 43
@@ -44,10 +45,9 @@ int sp_rfc1867_callback(unsigned int event, void *event_data, void **extra) {
44 "Filename: %s\nTmpname: %s\nSize: %d\nError: %d\nScript: %s", 45 "Filename: %s\nTmpname: %s\nSize: %d\nError: %d\nScript: %s",
45 filename, tmp_name, filesize, 46 filename, tmp_name, filesize,
46 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)),
47 ZSTR_VAL(SNUFFLEUPAGUS_G(config).config_upload_validation->script)); 48 ZSTR_VAL(config_upload->script));
48 49
49 cmd[0] = 50 cmd[0] = ZSTR_VAL(config_upload->script);
50 ZSTR_VAL(SNUFFLEUPAGUS_G(config).config_upload_validation->script);
51 cmd[1] = tmp_name; 51 cmd[1] = tmp_name;
52 cmd[2] = NULL; 52 cmd[2] = NULL;
53 53
@@ -59,14 +59,10 @@ int sp_rfc1867_callback(unsigned int event, void *event_data, void **extra) {
59 env[4] = NULL; 59 env[4] = NULL;
60 60
61 if ((pid = fork()) == 0) { 61 if ((pid = fork()) == 0) {
62 if (execve( 62 if (execve(ZSTR_VAL(config_upload->script), cmd, env) == -1) {
63 ZSTR_VAL(
64 SNUFFLEUPAGUS_G(config).config_upload_validation->script),
65 cmd, env) == -1) {
66 sp_log_warn( 63 sp_log_warn(
67 "upload_validation", "Could not call '%s' : %s", 64 "upload_validation", "Could not call '%s' : %s",
68 ZSTR_VAL( 65 ZSTR_VAL(config_upload->script),
69 SNUFFLEUPAGUS_G(config).config_upload_validation->script),
70 strerror(errno)); 66 strerror(errno));
71 EFREE_3(env); 67 EFREE_3(env);
72 exit(1); 68 exit(1);
@@ -85,11 +81,11 @@ int sp_rfc1867_callback(unsigned int event, void *event_data, void **extra) {
85 wait(&waitstatus); 81 wait(&waitstatus);
86 if (WEXITSTATUS(waitstatus) != 0) { // Nope 82 if (WEXITSTATUS(waitstatus) != 0) { // Nope
87 char *uri = getenv("REQUEST_URI"); 83 char *uri = getenv("REQUEST_URI");
88 int sim = SNUFFLEUPAGUS_G(config).config_upload_validation->simulation; 84 int sim = config_upload->simulation;
89 sp_log_msg("upload_validation", sim ? SP_LOG_SIMULATION : SP_LOG_DROP, 85 sp_log_msg("upload_validation", sim ? SP_LOG_SIMULATION : SP_LOG_DROP,
90 "The upload of %s on %s was rejected.", filename, 86 "The upload of %s on %s was rejected.", filename,
91 uri ? uri : "?"); 87 uri ? uri : "?");
92 if (!SNUFFLEUPAGUS_G(config).config_upload_validation->simulation) { 88 if (!config_upload->simulation) {
93 sp_terminate(); 89 sp_terminate();
94 } 90 }
95 } 91 }