This is an automated email from the ASF dual-hosted git repository.

gancho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

The following commit(s) were added to refs/heads/master by this push:
       new  d7e85e5   Coverity 1022122, 1022123, 1022125: Dereference before 
null check
d7e85e5 is described below

commit d7e85e51e79e5c326e255d6f0caab0a7c9238e5e
Author: Gancho Tenev <gan...@apache.com>
AuthorDate: Wed May 10 12:38:00 2017 -0700

    Coverity 1022122, 1022123, 1022125: Dereference before null check
    
    Problem:
    CID 1022122 (#1 of 1): Dereference before null check (REVERSE_INULL)
    check_after_deref: Null-checking txn_sm->q_client_request_buffer suggests 
that it may be null, but it has already been dereferenced on all paths leading 
to the check.
    CID 1022123 (#1 of 1): Dereference before null check (REVERSE_INULL)
    check_after_deref: Null-checking txn_sm->q_client_response_buffer suggests 
that it may be null, but it has already been dereferenced on all paths leading 
to the check.
    CID 1022125 (#1 of 1): Dereference before null check (REVERSE_INULL)
    check_after_deref: Null-checking txn_sm->q_cache_read_buffer suggests that 
it may be null, but it has already been dereferenced on all paths leading to 
the check
    
    Fix:
    Checked the return values on each step instead of all at the end.
---
 example/protocol/TxnSM.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/example/protocol/TxnSM.c b/example/protocol/TxnSM.c
index db3005f..316fd72 100644
--- a/example/protocol/TxnSM.c
+++ b/example/protocol/TxnSM.c
@@ -160,10 +160,12 @@ state_start(TSCont contp, TSEvent event ATS_UNUSED, void 
*data ATS_UNUSED)
     return prepare_to_die(contp);
   }
 
-  txn_sm->q_client_request_buffer        = TSIOBufferCreate();
+  txn_sm->q_client_request_buffer = TSIOBufferCreate();
+  if (!txn_sm->q_client_request_buffer) {
+    return prepare_to_die(contp);
+  }
   txn_sm->q_client_request_buffer_reader = 
TSIOBufferReaderAlloc(txn_sm->q_client_request_buffer);
-
-  if (!txn_sm->q_client_request_buffer || 
!txn_sm->q_client_request_buffer_reader) {
+  if (!txn_sm->q_client_request_buffer_reader) {
     return prepare_to_die(contp);
   }
 
@@ -286,13 +288,20 @@ state_handle_cache_lookup(TSCont contp, TSEvent event, 
TSVConn vc)
     response_size = TSVConnCacheObjectSizeGet(txn_sm->q_cache_vc);
 
     /* Allocate IOBuffer to store data from the cache. */
-    txn_sm->q_client_response_buffer        = TSIOBufferCreate();
+    txn_sm->q_client_response_buffer = TSIOBufferCreate();
+    if (!txn_sm->q_client_response_buffer) {
+      return prepare_to_die(contp);
+    }
     txn_sm->q_client_response_buffer_reader = 
TSIOBufferReaderAlloc(txn_sm->q_client_response_buffer);
-    txn_sm->q_cache_read_buffer             = TSIOBufferCreate();
-    txn_sm->q_cache_read_buffer_reader      = 
TSIOBufferReaderAlloc(txn_sm->q_cache_read_buffer);
-
-    if (!txn_sm->q_client_response_buffer || 
!txn_sm->q_client_response_buffer_reader || !txn_sm->q_cache_read_buffer ||
-        !txn_sm->q_cache_read_buffer_reader) {
+    if (!txn_sm->q_client_response_buffer_reader) {
+      return prepare_to_die(contp);
+    }
+    txn_sm->q_cache_read_buffer = TSIOBufferCreate();
+    if (!txn_sm->q_cache_read_buffer) {
+      return prepare_to_die(contp);
+    }
+    txn_sm->q_cache_read_buffer_reader = 
TSIOBufferReaderAlloc(txn_sm->q_cache_read_buffer);
+    if (!txn_sm->q_cache_read_buffer_reader) {
       return prepare_to_die(contp);
     }
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <commits@trafficserver.apache.org>'].

Reply via email to