| 157 | } |
| 158 | |
| 159 | static inline int setenvvar(struct hf_wrapper** hf, int_str* value, int isstr, int idx) |
| 160 | { |
| 161 | #define OSIPS_EXEC "OSIPS_EXEC_" |
| 162 | |
| 163 | |
| 164 | int len=0; |
| 165 | str sidx; |
| 166 | |
| 167 | sidx.s = int2str((unsigned long)idx, &sidx.len); |
| 168 | |
| 169 | (*hf)->envvar=pkg_malloc(strlen(OSIPS_EXEC) + sidx.len + 1/*=*/ |
| 170 | + (isstr?(*value).s.len:INT2STR_MAX_LEN) + 1/*\0*/); |
| 171 | if ((*hf)->envvar==0) { |
| 172 | LM_ERR("no more pkg mem\n"); |
| 173 | return -1; |
| 174 | } |
| 175 | |
| 176 | memcpy((*hf)->envvar, OSIPS_EXEC, strlen(OSIPS_EXEC)); |
| 177 | len=strlen(OSIPS_EXEC); |
| 178 | |
| 179 | memcpy((*hf)->envvar+len, sidx.s, sidx.len); |
| 180 | len+=sidx.len; |
| 181 | |
| 182 | (*hf)->envvar[len++] = '='; |
| 183 | |
| 184 | if (isstr) { |
| 185 | memcpy((*hf)->envvar+len, value->s.s, value->s.len); |
| 186 | (*hf)->envvar[len+ value->s.len] = '\0'; |
| 187 | } else { |
| 188 | sidx.s = int2str((unsigned long)value->n, &sidx.len); |
| 189 | memcpy((*hf)->envvar+len, sidx.s, sidx.len); |
| 190 | (*hf)->envvar[len+ sidx.len] = '\0'; |
| 191 | } |
| 192 | |
| 193 | (*hf)->next_other=(*hf)->next_same=NULL; |
| 194 | |
| 195 | return 0; |
| 196 | |
| 197 | #undef OSIPS_EXEC |
| 198 | |
| 199 | } |
| 200 | |
| 201 | static struct hf_wrapper* get_avp_values_list(struct sip_msg* msg, pv_param_p avp) |
| 202 | { |
no test coverage detected