@@ -108,7 +108,7 @@ BOOL ParseCmdline(int argc, char* argv[])
108
108
109
109
TCHAR Proto [5 ];
110
110
111
- if ((argc == 1 ) || (isdigit (* argv [1 ])))
111
+ if ((argc == 1 ) || (_istdigit (* argv [1 ])))
112
112
bNoOptions = TRUE;
113
113
114
114
/* Parse command line for options we have been given. */
@@ -123,23 +123,18 @@ BOOL ParseCmdline(int argc, char* argv[])
123
123
switch (tolower (c ))
124
124
{
125
125
case 'a' :
126
- //_tprintf(_T("got a\n"));
127
126
bDoShowAllCons = TRUE;
128
127
break ;
129
128
case 'e' :
130
- //_tprintf(_T("got e\n"));
131
129
bDoShowEthStats = TRUE;
132
130
break ;
133
131
case 'n' :
134
- //_tprintf(_T("got n\n"));
135
132
bDoShowNumbers = TRUE;
136
133
break ;
137
134
case 's' :
138
- //_tprintf(_T("got s\n"));
139
135
bDoShowProtoStats = TRUE;
140
136
break ;
141
137
case 'p' :
142
- //_tprintf(_T("got p\n"));
143
138
bDoShowProtoCons = TRUE;
144
139
145
140
strncpy (Proto , (++ argv )[i ], sizeof (Proto ));
@@ -171,10 +166,12 @@ BOOL ParseCmdline(int argc, char* argv[])
171
166
}
172
167
}
173
168
}
174
- else if (isdigit (* argv [i ]))
169
+ else if (_istdigit (* argv [i ]))
175
170
{
176
- _stscanf (argv [i ], "%lu" , & Interval );
177
- bLoopOutput = TRUE;
171
+ if (_stscanf (argv [i ], "%lu" , & Interval ) != EOF )
172
+ bLoopOutput = TRUE;
173
+ else
174
+ return EXIT_FAILURE ;
178
175
}
179
176
// else
180
177
// {
@@ -278,7 +275,7 @@ VOID ShowIpStatistics()
278
275
PMIB_IPSTATS pIpStats ;
279
276
DWORD dwRetVal ;
280
277
281
- pIpStats = (MIB_IPSTATS * ) malloc ( sizeof (MIB_IPSTATS ));
278
+ pIpStats = (MIB_IPSTATS * ) HeapAlloc ( GetProcessHeap (), 0 , sizeof (MIB_IPSTATS ));
282
279
283
280
if ((dwRetVal = GetIpStatistics (pIpStats )) == NO_ERROR )
284
281
{
@@ -303,14 +300,16 @@ VOID ShowIpStatistics()
303
300
}
304
301
else
305
302
DoFormatMessage (dwRetVal );
303
+
304
+ HeapFree (GetProcessHeap (), 0 , pIpStats );
306
305
}
307
306
308
307
VOID ShowIcmpStatistics ()
309
308
{
310
309
PMIB_ICMP pIcmpStats ;
311
310
DWORD dwRetVal ;
312
311
313
- pIcmpStats = (MIB_ICMP * ) malloc ( sizeof (MIB_ICMP ));
312
+ pIcmpStats = (MIB_ICMP * ) HeapAlloc ( GetProcessHeap (), 0 , sizeof (MIB_ICMP ));
314
313
315
314
if ((dwRetVal = GetIcmpStatistics (pIcmpStats )) == NO_ERROR )
316
315
{
@@ -346,14 +345,16 @@ VOID ShowIcmpStatistics()
346
345
else
347
346
DoFormatMessage (dwRetVal );
348
347
348
+ HeapFree (GetProcessHeap (), 0 , pIcmpStats );
349
+
349
350
}
350
351
351
352
VOID ShowTcpStatistics ()
352
353
{
353
354
PMIB_TCPSTATS pTcpStats ;
354
355
DWORD dwRetVal ;
355
356
356
- pTcpStats = (MIB_TCPSTATS * ) malloc ( sizeof (MIB_TCPSTATS ));
357
+ pTcpStats = (MIB_TCPSTATS * ) HeapAlloc ( GetProcessHeap (), 0 , sizeof (MIB_TCPSTATS ));
357
358
358
359
if ((dwRetVal = GetTcpStatistics (pTcpStats )) == NO_ERROR )
359
360
{
@@ -369,14 +370,16 @@ VOID ShowTcpStatistics()
369
370
}
370
371
else
371
372
DoFormatMessage (dwRetVal );
373
+
374
+ HeapFree (GetProcessHeap (), 0 , pTcpStats );
372
375
}
373
376
374
377
VOID ShowUdpStatistics ()
375
378
{
376
379
PMIB_UDPSTATS pUdpStats ;
377
380
DWORD dwRetVal ;
378
381
379
- pUdpStats = (MIB_UDPSTATS * ) malloc ( sizeof (MIB_UDPSTATS ));
382
+ pUdpStats = (MIB_UDPSTATS * ) HeapAlloc ( GetProcessHeap (), 0 , sizeof (MIB_UDPSTATS ));
380
383
381
384
if ((dwRetVal = GetUdpStatistics (pUdpStats )) == NO_ERROR )
382
385
{
@@ -388,6 +391,8 @@ VOID ShowUdpStatistics()
388
391
}
389
392
else
390
393
DoFormatMessage (dwRetVal );
394
+
395
+ HeapFree (GetProcessHeap (), 0 , pUdpStats );
391
396
}
392
397
393
398
VOID ShowEthernetStatistics ()
@@ -396,12 +401,12 @@ VOID ShowEthernetStatistics()
396
401
DWORD dwSize = 0 ;
397
402
DWORD dwRetVal = 0 ;
398
403
399
- pIfTable = (MIB_IFTABLE * ) malloc ( sizeof (MIB_IFTABLE ));
404
+ pIfTable = (MIB_IFTABLE * ) HeapAlloc ( GetProcessHeap (), 0 , sizeof (MIB_IFTABLE ));
400
405
401
406
if (GetIfTable (pIfTable , & dwSize , 0 ) == ERROR_INSUFFICIENT_BUFFER )
402
407
{
403
- GlobalFree ( pIfTable );
404
- pIfTable = (MIB_IFTABLE * ) malloc ( dwSize );
408
+ HeapFree ( GetProcessHeap (), 0 , pIfTable );
409
+ pIfTable = (MIB_IFTABLE * ) HeapAlloc ( GetProcessHeap (), 0 , dwSize );
405
410
406
411
if ((dwRetVal = GetIfTable (pIfTable , & dwSize , 0 )) == NO_ERROR )
407
412
{
@@ -423,6 +428,7 @@ VOID ShowEthernetStatistics()
423
428
else
424
429
DoFormatMessage (dwRetVal );
425
430
}
431
+ HeapFree (GetProcessHeap (), 0 , pIfTable );
426
432
}
427
433
428
434
VOID ShowTcpTable ()
@@ -444,12 +450,13 @@ VOID ShowTcpTable()
444
450
DoFormatMessage (error );
445
451
exit (EXIT_FAILURE );
446
452
}
447
- tcpTable = (PMIB_TCPTABLE )malloc ( dwSize );
453
+ tcpTable = (PMIB_TCPTABLE ) HeapAlloc ( GetProcessHeap (), 0 , dwSize );
448
454
error = GetTcpTable (tcpTable , & dwSize , TRUE );
449
455
if (error )
450
456
{
451
457
printf ("Failed to snapshot TCP endpoints table.\n" );
452
458
DoFormatMessage (error );
459
+ HeapFree (GetProcessHeap (), 0 , tcpTable );
453
460
exit (EXIT_FAILURE );
454
461
}
455
462
@@ -475,6 +482,7 @@ VOID ShowTcpTable()
475
482
Host , Remote , TcpState [tcpTable -> table [i ].dwState ]);
476
483
}
477
484
}
485
+ HeapFree (GetProcessHeap (), 0 , tcpTable );
478
486
}
479
487
480
488
@@ -495,12 +503,13 @@ VOID ShowUdpTable()
495
503
DoFormatMessage (error );
496
504
exit (EXIT_FAILURE );
497
505
}
498
- udpTable = (PMIB_UDPTABLE )malloc ( dwSize );
506
+ udpTable = (PMIB_UDPTABLE ) HeapAlloc ( GetProcessHeap (), 0 , dwSize );
499
507
error = GetUdpTable (udpTable , & dwSize , TRUE);
500
508
if (error )
501
509
{
502
510
printf ("Failed to snapshot UDP endpoints table.\n" );
503
511
DoFormatMessage (error );
512
+ HeapFree (GetProcessHeap (), 0 , udpTable );
504
513
exit (EXIT_FAILURE );
505
514
}
506
515
@@ -516,6 +525,8 @@ VOID ShowUdpTable()
516
525
517
526
_tprintf (_T (" %-6s %-22s %-22s\n" ), _T ("UDP" ), Host , _T (":*:" ));
518
527
}
528
+
529
+ HeapFree (GetProcessHeap (), 0 , udpTable );
519
530
}
520
531
521
532
0 commit comments