Răsfoiți Sursa

Initialize device argument to NULL on malloc (closes #184)

Stéphane Raimbault 11 ani în urmă
părinte
comite
55bd5054e6
2 a modificat fișierele cu 11 adăugiri și 0 ștergeri
  1. 1 0
      src/modbus-rtu.c
  2. 10 0
      tests/unit-test-client.c

+ 1 - 0
src/modbus-rtu.c

@@ -1151,6 +1151,7 @@ modbus_t* modbus_new_rtu(const char *device,
     ctx->backend = &_modbus_rtu_backend;
     ctx->backend_data = (modbus_rtu_t *) malloc(sizeof(modbus_rtu_t));
     ctx_rtu = (modbus_rtu_t *)ctx->backend_data;
+    ctx_rtu->device = NULL;
 
     /* Check device argument */
     if (device == NULL || (*device) == 0) {

+ 10 - 0
tests/unit-test-client.c

@@ -835,6 +835,16 @@ int main(int argc, char *argv[])
         goto close;
     }
 
+    /* Test init functions */
+    printf("\nTEST INVALID INITIALIZATION:\n");
+    ctx = modbus_new_rtu(NULL, 0, 'A', 0, 0);
+    if (ctx == NULL && errno == EINVAL) {
+        printf("OK\n");
+    } else {
+        printf("FAILED\n");
+        goto close;
+    }
+
     printf("\nALL TESTS PASS WITH SUCCESS.\n");
 
 close: