Commit b09ff2fbb4d08205ee2f3fed7d370e4f79247117
1 parent
f7799a4f
Fix the fix of device string check.
Thanks to Jan Kardell.
Showing
1 changed file
with
4 additions
and
6 deletions
src/modbus-rtu.c
| ... | ... | @@ -1133,25 +1133,23 @@ modbus_t* modbus_new_rtu(const char *device, |
| 1133 | 1133 | { |
| 1134 | 1134 | modbus_t *ctx; |
| 1135 | 1135 | modbus_rtu_t *ctx_rtu; |
| 1136 | - size_t device_size; | |
| 1137 | 1136 | |
| 1138 | 1137 | ctx = (modbus_t *) malloc(sizeof(modbus_t)); |
| 1139 | 1138 | _modbus_init_common(ctx); |
| 1140 | - | |
| 1141 | 1139 | ctx->backend = &_modbus_rtu_backend; |
| 1142 | 1140 | ctx->backend_data = (modbus_rtu_t *) malloc(sizeof(modbus_rtu_t)); |
| 1143 | 1141 | ctx_rtu = (modbus_rtu_t *)ctx->backend_data; |
| 1144 | 1142 | |
| 1145 | - /* Device name and \0 */ | |
| 1146 | - device_size = (strlen(device) + 1) * sizeof(char); | |
| 1147 | - if (device_size == 0) { | |
| 1143 | + /* Check device argument */ | |
| 1144 | + if (device == NULL || (*device) == 0) { | |
| 1148 | 1145 | fprintf(stderr, "The device string is empty\n"); |
| 1149 | 1146 | modbus_free(ctx); |
| 1150 | 1147 | errno = EINVAL; |
| 1151 | 1148 | return NULL; |
| 1152 | 1149 | } |
| 1153 | 1150 | |
| 1154 | - ctx_rtu->device = (char *) malloc(device_size); | |
| 1151 | + /* Device name and \0 */ | |
| 1152 | + ctx_rtu->device = (char *) malloc((strlen(device) + 1) * sizeof(char)); | |
| 1155 | 1153 | strcpy(ctx_rtu->device, device); |
| 1156 | 1154 | |
| 1157 | 1155 | ctx_rtu->baud = baud; | ... | ... |