You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2022/04/14 09:44:35 UTC

svn commit: r1899841 - /httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c

Author: ylavic
Date: Thu Apr 14 09:44:35 2022
New Revision: 1899841

URL: http://svn.apache.org/viewvc?rev=1899841&view=rev
Log:
mod_heartmonitor: Fix setting and comparison of IPs fields.

Setting or comparing hm_server_t and hm_slot_server_t IPs should not be base
on MAXIPSIZE since the former is potentially a smaller const char*.


Modified:
    httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c

Modified: httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c?rev=1899841&r1=1899840&r2=1899841&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c (original)
+++ httpd/httpd/trunk/modules/cluster/mod_heartmonitor.c Thu Apr 14 09:44:35 2022
@@ -171,7 +171,7 @@ static apr_status_t hm_update(void* mem,
     hm_slot_server_t *old = (hm_slot_server_t *) mem;
     hm_slot_server_ctx_t *s = (hm_slot_server_ctx_t *) data;
     hm_server_t *new = s->s;
-    if (strncmp(old->ip, new->ip, MAXIPSIZE)==0) {
+    if (strcmp(old->ip, new->ip)==0) {
         s->found = 1;
         old->busy = new->busy;
         old->ready = new->ready;
@@ -185,7 +185,7 @@ static apr_status_t hm_readid(void* mem,
     hm_slot_server_t *old = (hm_slot_server_t *) mem;
     hm_slot_server_ctx_t *s = (hm_slot_server_ctx_t *) data;
     hm_server_t *new = s->s;
-    if (strncmp(old->ip, new->ip, MAXIPSIZE)==0) {
+    if (strcmp(old->ip, new->ip)==0) {
         s->found = 1;
         s->item_id = old->id;
     }
@@ -202,7 +202,8 @@ static  apr_status_t  hm_slotmem_update_
     if (!ctx.found) {
         unsigned int i;
         hm_slot_server_t hmserver;
-        memcpy(hmserver.ip, s->ip, MAXIPSIZE);
+        memset(&hmserver, 0, sizeof(hmserver));
+        apr_cpystrn(hmserver.ip, s->ip, sizeof(hmserver.ip));
         hmserver.busy = s->busy;
         hmserver.ready = s->ready;
         hmserver.seen = s->seen;