From 579119c90ae99db91db4b97fec4e335497a08bf2 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Thu, 23 Jan 2020 02:25:22 +0000 Subject: [PATCH] Fix bug introduced in rev 1.236 (April-3-2014): Areafix requests to unlink a node from an area would corrupt the list of linked nodes: the *last* listed node would always be removed. If this was not the node that submitted the areafix request, then 2 nodes would be removed from the list of linked-nodes for an echo. To simplify this, we're just going to not write the removed node back to the area file, but leave it in the in-memory list. So technically, the node won't be unlinked until the next run of SBBSecho when the area file is re-parsed. If that's a problem, we can always add run-time removal from the in-memory list later. Reported by Alterego (ALTERANT). --- src/sbbs3/sbbsecho.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index f84b3281f1..87c7c7d793 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -1699,16 +1699,6 @@ void alter_areas(str_list_t add_area, str_list_t del_area, fidoaddr_t addr, cons } lprintf(LOG_INFO,"AreaFix (for %s) Unlinking area: %s", smb_faddrtoa(&addr,NULL), echotag); - /* Added 12/4/95 to remove link from connected link */ - - for(k=u;k<cfg.area[u].links-1;k++) - memcpy(&cfg.area[u].link[k],&cfg.area[u].link[k+1] - ,sizeof(fidoaddr_t)); - --cfg.area[u].links; - if(cfg.area[u].links==0) { - FREE_AND_NULL(cfg.area[u].link); - } - fprintf(afileout,"%-*s %-*s " ,LEN_EXTCODE, code ,FIDO_AREATAG_LEN, echotag); -- GitLab