diff options
| author | jvoisin | 2018-10-06 16:15:00 +0000 |
|---|---|---|
| committer | GitHub | 2018-10-06 16:15:00 +0000 |
| commit | aa550b9abadc109a2c89a7cd6dd047ac2a953027 (patch) | |
| tree | 1892e9ce8f833f3f13278cd424368fe1b5e26d91 /src/sp_upload_validation.c | |
| parent | 228fadf307b167a22ad6ec760f3b2ee2e9f2fee3 (diff) | |
Bump a bit the coverage
* `setcookie` doesn't always return `true` anymore
* clang-format
* Cookies with invalid decryption are dropped, but the request isn't anymore
* faulty unserialize are now dumpable
Diffstat (limited to 'src/sp_upload_validation.c')
| -rw-r--r-- | src/sp_upload_validation.c | 32 |
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 | } |
