Commit 192fac7c1a078f7648312f6e8ae8c811459ffd5d
1 parent
987d5af1
Avoid negative value in FD_SET call
Showing
2 changed files
with
14 additions
and
0 deletions
src/modbus.c
| @@ -371,6 +371,13 @@ int _modbus_receive_msg(modbus_t *ctx, uint8_t *msg, msg_type_t msg_type) | @@ -371,6 +371,13 @@ int _modbus_receive_msg(modbus_t *ctx, uint8_t *msg, msg_type_t msg_type) | ||
| 371 | } | 371 | } |
| 372 | } | 372 | } |
| 373 | 373 | ||
| 374 | + if (ctx->s == -1) { | ||
| 375 | + if (ctx->debug) { | ||
| 376 | + fprintf(stderr, "ERROR The connection is not established.\n"); | ||
| 377 | + } | ||
| 378 | + return -1; | ||
| 379 | + } | ||
| 380 | + | ||
| 374 | /* Add a file descriptor to the set */ | 381 | /* Add a file descriptor to the set */ |
| 375 | FD_ZERO(&rset); | 382 | FD_ZERO(&rset); |
| 376 | FD_SET(ctx->s, &rset); | 383 | FD_SET(ctx->s, &rset); |
tests/unit-test-client.c
| @@ -786,6 +786,13 @@ int test_server(modbus_t *ctx, int use_backend) | @@ -786,6 +786,13 @@ int test_server(modbus_t *ctx, int use_backend) | ||
| 786 | modbus_get_response_timeout(ctx, &old_response_to_sec, &old_response_to_usec); | 786 | modbus_get_response_timeout(ctx, &old_response_to_sec, &old_response_to_usec); |
| 787 | modbus_set_response_timeout(ctx, 0, 600000); | 787 | modbus_set_response_timeout(ctx, 0, 600000); |
| 788 | 788 | ||
| 789 | + int old_s = modbus_get_socket(ctx); | ||
| 790 | + modbus_set_socket(ctx, -1); | ||
| 791 | + rc = modbus_receive(ctx, rsp); | ||
| 792 | + modbus_set_socket(ctx, old_s); | ||
| 793 | + printf("* modbus_receive with invalid socket: "); | ||
| 794 | + ASSERT_TRUE(rc == -1, "FAILED (%d)\n", rc); | ||
| 795 | + | ||
| 789 | req_length = modbus_send_raw_request(ctx, read_raw_req, READ_RAW_REQ_LEN); | 796 | req_length = modbus_send_raw_request(ctx, read_raw_req, READ_RAW_REQ_LEN); |
| 790 | printf("* modbus_send_raw_request: "); | 797 | printf("* modbus_send_raw_request: "); |
| 791 | ASSERT_TRUE(req_length == (backend_length + 5), "FAILED (%d)\n", req_length); | 798 | ASSERT_TRUE(req_length == (backend_length + 5), "FAILED (%d)\n", req_length); |