Change to blog euid storage; note new definition in libcitadel.h
authorArt Cancro <ajc@uncensored.citadel.org>
Fri, 20 May 2011 21:37:05 +0000 (17:37 -0400)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 4 Sep 2011 20:50:55 +0000 (20:50 +0000)
citadel/modules/blog/serv_blog.c
webcit/blogview_renderer.c

index 5459898f759095115fb06af6877b9d322d2efbb9..fb95d613b4a1fc2a2df963a686a31f15d6bb15d0 100644 (file)
@@ -74,11 +74,18 @@ int blog_upload_beforesave(struct CtdlMessage *msg) {
         */
        if (msg->cm_fields['E'] == NULL)
        {
-               char uuid[37];
+               char uuid[BLOG_EUIDBUF_SIZE];
                generate_uuid(uuid);
                msg->cm_fields['E'] = strdup(uuid);
        }
 
+       /*
+        * We also want to define a maximum length, whether we generated it or not.
+        */
+       else if (strlen(msg->cm_fields['E']) >= BLOG_EUIDBUF_SIZE) {
+               msg->cm_fields['E'][BLOG_EUIDBUF_SIZE-1] = 0;
+       }
+
        /* Now allow the save to complete. */
        return(0);
 }
index 8190cb8c8ddca9a1b7b6f2c16d85bfad989a058f..25af87053da59a37b5cea43618f5dba5cb122ac9 100644 (file)
@@ -1,7 +1,7 @@
 /* 
  * Blog view renderer module for WebCit
  *
- * Copyright (c) 1996-2010 by the citadel.org team
+ * Copyright (c) 1996-2011 by the citadel.org team
  *
  * This program is open source software.  You can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -87,7 +87,7 @@ void blogpost_render_and_destroy(struct blogpost *bp) {
 struct bltr {
        int id;
        int refs;
-       StrBuf *euid;
+       char euid[BLOG_EUIDBUF_SIZE];   /* please do not change this to a StrBuf */
 };
 
 
@@ -124,7 +124,7 @@ struct bltr blogview_learn_thread_references(long msgnum)
        StrBuf *Buf;
        StrBuf *r;
        int len;
-       struct bltr bltr = { 0, 0, NULL };
+       struct bltr bltr = { 0, 0, "" } ;
        Buf = NewStrBuf();
        r = NewStrBuf();
        serv_printf("MSG0 %ld|1", msgnum);              /* top level citadel headers only */
@@ -145,7 +145,7 @@ struct bltr blogview_learn_thread_references(long msgnum)
                        }
                        else if (!strncasecmp(ChrPtr(Buf), "exti=", 5)) {
                                StrBufCutLeft(Buf, 5);          /* trim the field name */
-                               bltr.euid = NewStrBufDup(Buf);
+                               safestrncpy(bltr.euid, ChrPtr(Buf), sizeof(bltr.euid));
                        }
                }
        }
@@ -170,9 +170,8 @@ int blogview_LoadMsgFromServer(SharedMessageStatus *Stat,
 
        b = blogview_learn_thread_references(Msg->msgnum);
 
-       if (b.euid != NULL) {
-               syslog(LOG_DEBUG, "\033[7m%s\033[0m", ChrPtr(b.euid));
-               FreeStrBuf(&b.euid);
+       if (!IsEmptyStr(b.euid)) {
+               syslog(LOG_DEBUG, "\033[7m%s\033[0m", b.euid);
        }
 
        /* FIXME an optimization here -- one we ought to perform -- is to exit this