/* {{{ SAPI_POST_READER_FUNC */ SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader) { char *data; int length; /* $HTTP_RAW_POST_DATA registration */ if (!strcmp(SG(request_info).request_method, "POST")) { if (NULL == SG(request_info).post_entry) { /* no post handler registered, so we just swallow the data */ sapi_read_standard_form_data(TSRMLS_C); } /* For unknown content types we create HTTP_RAW_POST_DATA even if always_populate_raw_post_data off, * this is in-effecient, but we need to keep doing it for BC reasons (for now) */ if ((PG(always_populate_raw_post_data) || NULL == SG(request_info).post_entry) && SG(request_info).post_data) { length = SG(request_info).post_data_length; data = estrndup(SG(request_info).post_data, length); SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, length); } } /* for php://input stream: some post handlers modify the content of request_info.post_data so for now we need a copy for the php://input stream in the long run post handlers should be changed to not touch request_info.post_data for memory preservation reasons */ if (SG(request_info).post_data) { SG(request_info).raw_post_data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length); SG(request_info).raw_post_data_length = SG(request_info).post_data_length; } }
int ora_set_param_values(oraCursor *cursor, int isout) { char *paramname; oraParam *param; #if PHP_API_VERSION < 19990421 pval *pdata; #else pval **pdata; #endif int i, len, plen; #if (WIN32|WINNT) /* see variables.c */ HashTable *symbol_table=php3i_get_symbol_table(); #endif _php3_hash_internal_pointer_reset(cursor->params); if(_php3_hash_num_elements(cursor->params) != cursor->nparams){ php3_error(E_WARNING, "Mismatch in number of parameters"); return 0; } for(i = 0; i < cursor->nparams; i++, _php3_hash_move_forward(cursor->params)){ if(_php3_hash_get_current_key(cursor->params, ¶mname, NULL) != HASH_KEY_IS_STRING){ php3_error(E_WARNING, "Can't get parameter name"); return 0; } if(_php3_hash_get_current_data(cursor->params, (void **)¶m) == FAILURE){ php3_error(E_WARNING, "Can't get parameter data"); efree(paramname); return 0; } if(isout){ #if (WIN32|WINNT) /* see oracle_hack.c */ { pval var; char *name=(paramname); var.value.str.val = estrdup(param->progv); var.value.str.len = strlen(param->progv); var.type = IS_STRING; _php3_hash_update(symbol_table, name, strlen(name)+1, &var, sizeof(pval),NULL); } #else SET_VAR_STRINGL(paramname, estrdup(param->progv), strlen(param->progv)); #endif efree(paramname); continue; } /* doing the in-loop */ /* FIXME Globals don't work in extensions on windows, have to do something else here. See oracle_hack.c */ #if (WIN32|WINNT) if(_php3_hash_find(symbol_table, paramname, strlen(paramname) + 1, (void **)&pdata) == FAILURE){ php3_error(E_WARNING, "Can't find variable for parameter"); efree(paramname); return 0; } #else #if PHP_API_VERSION < 19990421 if(_php3_hash_find(&GLOBAL(symbol_table), paramname, strlen(paramname) + 1, (void **)&pdata) == FAILURE){ #else if(_php3_hash_find(&EG(symbol_table), paramname, strlen(paramname) + 1, (void **)&pdata) == FAILURE){ #endif php3_error(E_WARNING, "Can't find variable for parameter"); efree(paramname); return 0; } #endif #if PHP_API_VERSION < 19990421 convert_to_string(pdata); plen = pdata->value.str.len; #else convert_to_string(*pdata); plen = (*pdata)->value.str.len; #endif if (param->progvl <= plen){ php3_error(E_NOTICE, "Input value will be truncated"); } len = min(param->progvl - 1, plen); #if PHP_API_VERSION < 19990421 strncpy(param->progv, pdata->value.str.val, len); #else strncpy(param->progv, (*pdata)->value.str.val, len); #endif param->progv[len] = '\0'; efree(paramname); } return 1; }