Protect precious strlens, as pointed out by John Goerzen
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index ac4e7da7d0e35c27e3b520f29abfdf871c31ffa3..17b67317fd7a5ac42c25e3e888ec954ab1acb73c 100644 (file)
@@ -375,20 +375,25 @@ int rss_format_item(AsyncIO *IO, networker_save_message *SaveMsg)
                StrBufSpaceToBlank(SaveMsg->title);
                len = StrLength(SaveMsg->title);
                Sbj = html_to_ascii(ChrPtr(SaveMsg->title), len, 512, 0);
-               len = strlen(Sbj);
-               if ((len > 0) && (Sbj[len - 1] == '\n'))
-               {
-                       len --;
-                       Sbj[len] = '\0';
-               }
-               Encoded = NewStrBufPlain(Sbj, len);
-               free(Sbj);
-
-               StrBufTrim(Encoded);
-               StrBufRFC2047encode(&QPEncoded, Encoded);
+               if (!IsEmptyStr(Sbj)) {
+                       len = strlen(Sbj);
+                       if ((Sbj[len - 1] == '\n'))
+                       {
+                               len --;
+                               Sbj[len] = '\0';
+                       }
+                       Encoded = NewStrBufPlain(Sbj, len);
+               
 
-               CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded);
-               FreeStrBuf(&Encoded);
+                       StrBufTrim(Encoded);
+                       StrBufRFC2047encode(&QPEncoded, Encoded);
+                       
+                       CM_SetAsFieldSB(&SaveMsg->Msg, eMsgSubject, &QPEncoded);
+                       FreeStrBuf(&Encoded);
+               }
+               if (Sbj != NULL) {
+                       free(Sbj);
+               }
        }
        if (SaveMsg->link == NULL)
                SaveMsg->link = NewStrBufPlain(HKEY(""));
@@ -685,7 +690,7 @@ eNextState RSSAggregator_AnalyseReply(AsyncIO *IO)
                               guid,
                               EvGetNow(IO),
                               EvGetNow(IO) - USETABLE_ANTIEXPIRE,
-                              eCheckUpdate,
+                              eUpdate,
                               CCID, IO->ID)
            != 0)
        {