[tor-commits] [tor/master] Tidy status handling in rendservice.c

nickm at torproject.org nickm at torproject.org
Fri Aug 22 16:23:15 UTC 2014


commit d31bcc4b235c98ffb1b9a2c4fead7fb61d71fe75
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Aug 21 10:49:01 2014 -0400

    Tidy status handling in rendservice.c
    
    We had some code to fix up the 'status' return value to -1 on error
    if it wasn't set, but it was unreachable because our code was
    correct.  Tweak this by initializing status to -1, and then only
    setting it to 0 on success.  Also add a goto which was missing: its
    absence was harmless.
    
    [CID 718614, 718616]
---
 src/or/rendservice.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 0633c35..749d6fa 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1646,6 +1646,7 @@ rend_service_begin_parse_intro(const uint8_t *request,
  err:
   rend_service_free_intro(rv);
   rv = NULL;
+
   if (err_msg_out && !err_msg) {
     tor_asprintf(&err_msg,
                  "unknown INTRODUCE%d error",
@@ -1981,7 +1982,7 @@ rend_service_decrypt_intro(
   char service_id[REND_SERVICE_ID_LEN_BASE32+1];
   ssize_t key_len;
   uint8_t buf[RELAY_PAYLOAD_SIZE];
-  int result, status = 0;
+  int result, status = -1;
 
   if (!intro || !key) {
     if (err_msg_out) {
@@ -2060,6 +2061,8 @@ rend_service_decrypt_intro(
   intro->plaintext = tor_malloc(intro->plaintext_len);
   memcpy(intro->plaintext, buf, intro->plaintext_len);
 
+  status = 0;
+
   goto done;
 
  err:
@@ -2068,7 +2071,6 @@ rend_service_decrypt_intro(
                  "unknown INTRODUCE%d error decrypting encrypted part",
                  intro ? (int)(intro->type) : -1);
   }
-  if (status >= 0) status = -1;
 
  done:
   if (err_msg_out) *err_msg_out = err_msg;
@@ -2095,7 +2097,7 @@ rend_service_parse_intro_plaintext(
   char *err_msg = NULL;
   ssize_t ver_specific_len, ver_invariant_len;
   uint8_t version;
-  int status = 0;
+  int status = -1;
 
   if (!intro) {
     if (err_msg_out) {
@@ -2154,6 +2156,7 @@ rend_service_parse_intro_plaintext(
         (int)(intro->type),
         (long)(intro->plaintext_len));
     status = -6;
+    goto err;
   } else {
     memcpy(intro->rc,
            intro->plaintext + ver_specific_len,
@@ -2166,6 +2169,7 @@ rend_service_parse_intro_plaintext(
   /* Flag it as being fully parsed */
   intro->parsed = 1;
 
+  status = 0;
   goto done;
 
  err:
@@ -2174,7 +2178,6 @@ rend_service_parse_intro_plaintext(
                  "unknown INTRODUCE%d error parsing encrypted part",
                  intro ? (int)(intro->type) : -1);
   }
-  if (status >= 0) status = -1;
 
  done:
   if (err_msg_out) *err_msg_out = err_msg;



More information about the tor-commits mailing list