From b09ff2fbb4d08205ee2f3fed7d370e4f79247117 Mon Sep 17 00:00:00 2001 From: Stéphane Raimbault Date: Wed, 3 Jul 2013 10:21:20 +0200 Subject: [PATCH] Fix the fix of device string check. --- src/modbus-rtu.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/modbus-rtu.c b/src/modbus-rtu.c index 27ef898..c07e3a0 100644 --- a/src/modbus-rtu.c +++ b/src/modbus-rtu.c @@ -1133,25 +1133,23 @@ modbus_t* modbus_new_rtu(const char *device, { modbus_t *ctx; modbus_rtu_t *ctx_rtu; - size_t device_size; ctx = (modbus_t *) malloc(sizeof(modbus_t)); _modbus_init_common(ctx); - ctx->backend = &_modbus_rtu_backend; ctx->backend_data = (modbus_rtu_t *) malloc(sizeof(modbus_rtu_t)); ctx_rtu = (modbus_rtu_t *)ctx->backend_data; - /* Device name and \0 */ - device_size = (strlen(device) + 1) * sizeof(char); - if (device_size == 0) { + /* Check device argument */ + if (device == NULL || (*device) == 0) { fprintf(stderr, "The device string is empty\n"); modbus_free(ctx); errno = EINVAL; return NULL; } - ctx_rtu->device = (char *) malloc(device_size); + /* Device name and \0 */ + ctx_rtu->device = (char *) malloc((strlen(device) + 1) * sizeof(char)); strcpy(ctx_rtu->device, device); ctx_rtu->baud = baud; -- libgit2 0.21.4