| 225 | } |
| 226 | |
| 227 | int evs_update(fs_evs *sock, const str *user, const str *pass) |
| 228 | { |
| 229 | str user_dup = {NULL, 0}, pass_dup; |
| 230 | |
| 231 | if (!ZSTRP(user)) { |
| 232 | if (shm_nt_str_dup(&user_dup, user) != 0) { |
| 233 | LM_ERR("oom\n"); |
| 234 | return -1; |
| 235 | } |
| 236 | } |
| 237 | |
| 238 | if (!ZSTRP(pass)) { |
| 239 | if (shm_nt_str_dup(&pass_dup, pass) != 0) { |
| 240 | LM_ERR("oom\n"); |
| 241 | if (!ZSTRP(user)) |
| 242 | shm_free(user_dup.s); |
| 243 | return -1; |
| 244 | } |
| 245 | } |
| 246 | |
| 247 | if (!ZSTRP(user)) { |
| 248 | shm_free(sock->user.s); |
| 249 | sock->user = user_dup; |
| 250 | } else { |
| 251 | shm_free(sock->user.s); |
| 252 | memset(&sock->user, 0, sizeof sock->user); |
| 253 | } |
| 254 | |
| 255 | /* never end up with an empty password */ |
| 256 | if (!ZSTRP(pass)) { |
| 257 | shm_free(sock->pass.s); |
| 258 | sock->pass = pass_dup; |
| 259 | } |
| 260 | |
| 261 | return 0; |
| 262 | } |
| 263 | |
| 264 | static fs_evs* get_evs(const str *host, unsigned short port, |
| 265 | const str *user, const str *pass) |
no test coverage detected