]> granicus.if.org Git - apache/commitdiff
* modules/ssl/ssl_scache_shmcb.c (shmcb_subcache_retrieve,
authorJoe Orton <jorton@apache.org>
Mon, 25 Feb 2008 10:04:37 +0000 (10:04 +0000)
committerJoe Orton <jorton@apache.org>
Mon, 25 Feb 2008 10:04:37 +0000 (10:04 +0000)
  shmcbc_subcache_remove): Restore check for idx->removed flag.

Found by: rpluem

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@630786 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/ssl_scache_shmcb.c

index adcd9e2b547cc410d48ea07f215389d63fa08e80..7c2d633a8a3da2d8c6e474f5932dee927ba53282 100644 (file)
@@ -728,7 +728,8 @@ static BOOL shmcb_subcache_retrieve(server_rec *s, SHMCBHeader *header,
          * flag isn't set; check the data length too to avoid a buffer
          * overflow in case of corruption, which should be impossible,
          * but it's cheap to be safe. */
-        if (idx->id_len == idlen && (idx->data_used - idx->id_len) < *destlen
+        if (!idx->removed
+            && idx->id_len == idlen && (idx->data_used - idx->id_len) < *destlen
             && shmcb_cyclic_memcmp(header->subcache_data_size,
                                    SHMCB_DATA(header, subcache),
                                    idx->data_pos, id, idx->id_len) == 0) {
@@ -780,7 +781,7 @@ static BOOL shmcb_subcache_remove(server_rec *s, SHMCBHeader *header,
 
         /* Only consider 'idx' if the id matches, and the "removed"
          * flag isn't set. */
-        if (idx->id_len == idlen
+        if (!idx->removed && idx->id_len == idlen
             && shmcb_cyclic_memcmp(header->subcache_data_size,
                                    SHMCB_DATA(header, subcache),
                                    idx->data_pos, id, idx->id_len) == 0) {