You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2008/04/23 01:38:41 UTC

svn commit: r650698 - /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Author: sebor
Date: Tue Apr 22 16:38:40 2008
New Revision: 650698

URL: http://svn.apache.org/viewvc?rev=650698&view=rev
Log:
2008-04-22  Martin Sebor  <se...@roguewave.com>

	STDCXX-754
	* tests/src/cmdopt.cpp (rw_vsetopts): Handled malloc() failure.
	Added an assertion to silence a bogus HP aCC 6/cadvise warning
	#20200-D: Potential null pointer dereference. Unfortunately,
	with the one gone another bogus one pops up...

Modified:
    stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Modified: stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/cmdopt.cpp?rev=650698&r1=650697&r2=650698&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/src/cmdopt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/src/cmdopt.cpp Tue Apr 22 16:38:40 2008
@@ -20,7 +20,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 2005-2006 Rogue Wave Software.
+ * Copyright 2005-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -518,6 +518,8 @@
                 lopt = lastopt->loptbuf_;
             else {
                 lopt = (char*)malloc (optlen + 1);
+                if (0 == lopt)
+                    return -1;   // error
                 lastopt->lopt_ = lopt;
             }
 
@@ -533,6 +535,8 @@
         lastopt->maxcount_ = 1;
 
         int arg_is_callback = true;
+
+        RW_ASSERT (0 != next);
 
         if ('#' == *next) {
             // examples of option specification:



Re: svn commit: r650698 - /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Posted by Martin Sebor <se...@roguewave.com>.
Eric Lemings wrote:
>  
> Rather than having malloc() function calls scattered throughout the test
> driver, I was wondering if a conventional malloc() wrapper wouldn't take
> care of a lot of this error checking and null pointer dereference
> warnings.  A conventional Unix malloc() wrapper checks the return value
> and just prints a diagnostic and exits the program if it is null.

I think it would make sense. We already do something like this in
other areas of the driver (and/or the exec utility) to simplify
error handling.

Martin

> 
> Brad.
> 
>> -----Original Message-----
>> From: sebor@apache.org [mailto:sebor@apache.org] 
>> Sent: Tuesday, April 22, 2008 5:39 PM
>> To: commits@stdcxx.apache.org
>> Subject: svn commit: r650698 - 
>> /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
>>
>> Author: sebor
>> Date: Tue Apr 22 16:38:40 2008
>> New Revision: 650698
>>
>> URL: http://svn.apache.org/viewvc?rev=650698&view=rev
>> Log:
>> 2008-04-22  Martin Sebor  <se...@roguewave.com>
>>
>> 	STDCXX-754
>> 	* tests/src/cmdopt.cpp (rw_vsetopts): Handled malloc() failure.
>> 	Added an assertion to silence a bogus HP aCC 6/cadvise warning
>> 	#20200-D: Potential null pointer dereference. Unfortunately,
>> 	with the one gone another bogus one pops up...
>>
>> Modified:
>>     stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
>>
>> Modified: stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
>> URL: 
>> http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/c
>> mdopt.cpp?rev=650698&r1=650697&r2=650698&view=diff
>> ==============================================================
>> ================
>> --- stdcxx/branches/4.2.x/tests/src/cmdopt.cpp (original)
>> +++ stdcxx/branches/4.2.x/tests/src/cmdopt.cpp Tue Apr 22 
>> 16:38:40 2008
>> @@ -20,7 +20,7 @@
>>   * implied.   See  the License  for  the  specific language  
>> governing
>>   * permissions and limitations under the License.
>>   *
>> - * Copyright 2005-2006 Rogue Wave Software.
>> + * Copyright 2005-2008 Rogue Wave Software, Inc.
>>   * 
>>   
>> **************************************************************
>> ************/
>>  
>> @@ -518,6 +518,8 @@
>>                  lopt = lastopt->loptbuf_;
>>              else {
>>                  lopt = (char*)malloc (optlen + 1);
>> +                if (0 == lopt)
>> +                    return -1;   // error
>>                  lastopt->lopt_ = lopt;
>>              }
>>  
>> @@ -533,6 +535,8 @@
>>          lastopt->maxcount_ = 1;
>>  
>>          int arg_is_callback = true;
>> +
>> +        RW_ASSERT (0 != next);
>>  
>>          if ('#' == *next) {
>>              // examples of option specification:
>>
>>
>>


RE: svn commit: r650698 - /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Posted by Eric Lemings <Er...@roguewave.com>.
 
Rather than having malloc() function calls scattered throughout the test
driver, I was wondering if a conventional malloc() wrapper wouldn't take
care of a lot of this error checking and null pointer dereference
warnings.  A conventional Unix malloc() wrapper checks the return value
and just prints a diagnostic and exits the program if it is null.

Brad.

> -----Original Message-----
> From: sebor@apache.org [mailto:sebor@apache.org] 
> Sent: Tuesday, April 22, 2008 5:39 PM
> To: commits@stdcxx.apache.org
> Subject: svn commit: r650698 - 
> /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
> 
> Author: sebor
> Date: Tue Apr 22 16:38:40 2008
> New Revision: 650698
> 
> URL: http://svn.apache.org/viewvc?rev=650698&view=rev
> Log:
> 2008-04-22  Martin Sebor  <se...@roguewave.com>
> 
> 	STDCXX-754
> 	* tests/src/cmdopt.cpp (rw_vsetopts): Handled malloc() failure.
> 	Added an assertion to silence a bogus HP aCC 6/cadvise warning
> 	#20200-D: Potential null pointer dereference. Unfortunately,
> 	with the one gone another bogus one pops up...
> 
> Modified:
>     stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
> 
> Modified: stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
> URL: 
> http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/c
> mdopt.cpp?rev=650698&r1=650697&r2=650698&view=diff
> ==============================================================
> ================
> --- stdcxx/branches/4.2.x/tests/src/cmdopt.cpp (original)
> +++ stdcxx/branches/4.2.x/tests/src/cmdopt.cpp Tue Apr 22 
> 16:38:40 2008
> @@ -20,7 +20,7 @@
>   * implied.   See  the License  for  the  specific language  
> governing
>   * permissions and limitations under the License.
>   *
> - * Copyright 2005-2006 Rogue Wave Software.
> + * Copyright 2005-2008 Rogue Wave Software, Inc.
>   * 
>   
> **************************************************************
> ************/
>  
> @@ -518,6 +518,8 @@
>                  lopt = lastopt->loptbuf_;
>              else {
>                  lopt = (char*)malloc (optlen + 1);
> +                if (0 == lopt)
> +                    return -1;   // error
>                  lastopt->lopt_ = lopt;
>              }
>  
> @@ -533,6 +535,8 @@
>          lastopt->maxcount_ = 1;
>  
>          int arg_is_callback = true;
> +
> +        RW_ASSERT (0 != next);
>  
>          if ('#' == *next) {
>              // examples of option specification:
> 
> 
>