Tools/NetTest - Code cleanup in TCP tests
[tpg/acess2.git] / Tools / NetTest_Runner / stack.c
index 7d5e261..1a224e8 100644 (file)
@@ -53,6 +53,7 @@ void Stack_AddInterface(const char *Name, int AddrType, const void *Addr, int Ma
                break;
        default:
                assert(AddrType == 4);
+               fprintf(stderr, "Stack_AddInterface: Bad address type %i\n", AddrType);
                exit(1);
        }
 }
@@ -63,14 +64,24 @@ void Stack_AddRoute(int Type, const void *Network, int MaskBits, const void *Nex
 
 void Stack_AddArg(const char *Fmt, ...)
 {
+       if( giNumStackArgs == MAX_ARGS ) {
+               fprintf(stderr, "ERROR: Too many arguments to stack, %i max\n", MAX_ARGS);
+               return ;
+       }
        va_list args;
+       
        va_start(args, Fmt);
        size_t len = vsnprintf(NULL, 0, Fmt, args);
        va_end(args);
+
        char *arg = malloc(len+1);
+       assert(arg);
+
        va_start(args, Fmt);
        vsnprintf(arg, len+1, Fmt, args);
        va_end(args);
+       
+       assert( arg[len] == '\0' );
        gasStackArgs[giNumStackArgs++] = arg;
 }
 
@@ -123,6 +134,10 @@ void Stack_Kill(void)
                kill(giStack_PID, SIGTERM);
                giStack_PID = 0;
        }
+       
+       for( int i = 1; i < giNumStackArgs; i ++ )
+               free(gasStackArgs[i]);
+       giNumStackArgs = 1;
 }
 
 int Stack_SendCommand(const char *Fmt, ...)

UCC git Repository :: git.ucc.asn.au