(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/pop3-login/client-authenticate.c) |
| |
| 218 | | | static void sasl_callback(struct client *_client, enum sasl_server_reply reply, |
| 219 | | | const char *data, const char *const *args) |
| 220 | | | { |
| 221 | | | struct pop3_client *client = (struct pop3_client *)_client; |
Event 1:
client is set to _client.
hide
|
|
| 222 | | | struct const_iovec iov[3]; |
| 223 | | | const char *msg; |
| 224 | | | size_t data_len; |
| 225 | | | bool nodelay; |
| 226 | | | |
| 227 | | | i_assert(!client->destroyed ||
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/macros.h |
| |
189 | #define i_assert(expr) STMT_START{ \ |
190 | if (unlikely(!(expr))) \ |
191 | i_panic("file %s: line %d (%s): assertion failed: (%s)", \ |
192 | __FILE__, \ |
193 | __LINE__, \ |
194 | __PRETTY_FUNCTION__, \ |
195 | #expr); }STMT_END |
| |
|
| 228 | | | reply == SASL_SERVER_REPLY_CLIENT_ERROR || |
| 229 | | | reply == SASL_SERVER_REPLY_MASTER_FAILED); |
Event 2:
Skipping " if". client->destroyed evaluates to false.
hide
Event 3:
Skipping " if". !(!client->destroyed || reply == SASL_SERVER_REPLY_CLIENT_ERROR || reply == SASL_SERVER_REPLY_MASTER_FAILED) evaluates to false.
hide
Event 4:
Skipping " if". !!(!client->destroyed || reply == SASL_SERVER_REPLY_CLIENT_ERROR || reply == SASL_SERVER_REPLY_MASTER_FAILED) evaluates to true.
hide
Event 5:
Skipping " if". !!!(!client->destroyed || reply == SASL_SERVER_REPLY_CLIENT_ERROR || reply == SASL_SERVER_REPLY_MASTER_FAILED) evaluates to false.
hide
Event 6:
Skipping " if". __builtin_expect(...) evaluates to false.
hide
|
|
| 230 | | | |
| 231 | | | switch (reply) { |
Event 7:
reply evaluates to 0.
hide
|
|
| 232 | | | case SASL_SERVER_REPLY_SUCCESS: |
| 233 | | | if (args != NULL) { |
Event 8:
Skipping " if". args != (void *)0 evaluates to false.
hide
|
|
| 234 | | | if (client_handle_args(client, args, TRUE, &nodelay)) |
| 235 | | | break; |
| 236 | | | } |
| 237 | | | |
| 238 | [+] | | client_destroy_success(client, "Login"); |
Event 9:
client, which evaluates to _client, is passed to client_destroy_success() as the first argument. See related event 1.
hide
|
|
 |
| 239 | | | break; |
| 240 | | | case SASL_SERVER_REPLY_AUTH_FAILED: |
| 241 | | | case SASL_SERVER_REPLY_CLIENT_ERROR: |
| 242 | | | if (args != NULL) { |
| 243 | | | if (client_handle_args(client, args, FALSE, &nodelay)) |
| 244 | | | break; |
| 245 | | | } |
| 246 | | | |
| 247 | | | msg = t_strconcat("-ERR ", data != NULL ? |
| 248 | | | data : AUTH_FAILED_MSG, NULL); |
| 249 | | | client_send_line(client, msg); |
| 250 272 |  | | [ Lines 250 to 272 omitted. ] |
| 273 | | | |
| 274 | | | (void)o_stream_sendv(client->output, iov, 3); |
| 275 | | | |
| 276 | | | i_assert(client->io == NULL);
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/macros.h |
| |
189 | #define i_assert(expr) STMT_START{ \ |
190 | if (unlikely(!(expr))) \ |
191 | i_panic("file %s: line %d (%s): assertion failed: (%s)", \ |
192 | __FILE__, \ |
193 | __LINE__, \ |
194 | __PRETTY_FUNCTION__, \ |
195 | #expr); }STMT_END |
| |
|
| 277 | | | client->io = io_add(client->common.fd, IO_READ,
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/ioloop.h |
| |
50 | #define io_add(fd, condition, callback, context) \ |
51 | CONTEXT_CALLBACK(io_add, io_callback_t, \ |
52 | callback, context, fd, condition) |
| |
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/macros.h |
| |
146 | # define CONTEXT_CALLBACK(name, callback_type, callback, context, ...) \ |
147 | ({(void)(1 ? 0 : callback(context)); \ |
148 | name(__VA_ARGS__, (callback_type *)callback, context); }) |
| |
|
| 278 | | | client_auth_input, client); |
| 279 | | | client_auth_input(client); |
| 280 | | | return; |
| 281 | | | } |
| 282 | | | |
| 283 | [+] | | client_unref(client); |
Event 49:
client, which evaluates to _client, is passed to client_unref(). See related event 1.
hide
|
|
 |
| |