Mailinglist: properly sanitize the roomname if we have to use it as sender.
authorWilfried Goesgens <dothebart@citadel.org>
Wed, 12 Jun 2013 19:14:41 +0000 (21:14 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Wed, 12 Jun 2013 19:14:41 +0000 (21:14 +0200)
citadel/modules/network/serv_netspool.c

index 9928c7e4b9f252eec4c9f9831dec5ab3bce9079f..cbff2d41223804780b51b4b32426377a6c3aaf16 100644 (file)
@@ -224,6 +224,7 @@ void InspectQueuedRoom(SpoolControl **pSC,
 
 void CalcListID(SpoolControl *sc)
 {
+       StrBuf *RoomName;
        const char *err;
        int fd;
        struct CitContext *CCC = CC;
@@ -264,6 +265,9 @@ void CalcListID(SpoolControl *sc)
        }
 
        StrBufAppendBufPlain(sc->ListID, HKEY("<"), 0);
+       RoomName = NewStrBufPlain (sc->room.QRname, -1);
+       StrBufAsciify(RoomName, '_');
+       StrBufReplaceChars(RoomName, ' ', '_');
 
        if (StrLength(sc->Users[roommailalias]) > 0)
        {
@@ -282,9 +286,10 @@ void CalcListID(SpoolControl *sc)
        else
        {
                StrBufAppendBufPlain(sc->ListID, HKEY("room_"), 0);
-               StrBufAppendBufPlain(sc->ListID, sc->room.QRname, -1, 0);
+               StrBufAppendBuf(sc->ListID, RoomName, 0);
                StrBufAppendBufPlain(sc->ListID, HKEY("."), 0);
                StrBufAppendBufPlain(sc->ListID, config.c_fqdn, -1, 0);
+               FreeStrBuf(&RoomName);
                /*
                 * this used to be:
                 * roomname <Room-Number.list-id.fqdn>
@@ -299,12 +304,11 @@ void CalcListID(SpoolControl *sc)
        {
                sc->Users[roommailalias] = NewStrBuf();
                
-               StrBufPrintf(sc->Users[roommailalias],
-                            "room_%s@%s",
-                            CCC->room.QRname,
-                            config.c_fqdn);
+               StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("room_"), 0);
+               StrBufAppendBuf(sc->Users[roommailalias], RoomName, 0);
+               StrBufAppendBufPlain(sc->Users[roommailalias], HKEY("@"), 0);
+               StrBufAppendBufPlain(sc->Users[roommailalias], config.c_fqdn, -1, 0);
 
-               StrBufAsciify(sc->Users[roommailalias], '_');
                StrBufLowerCase(sc->Users[roommailalias]);
        }