On 07/21/2010 05:12 PM, Bron Gondwana wrote:

We decided to pull map_stupidshared.  Are you on the cyrus-devel
mailing list?


Yeah, but I've only been on it for a couple of months -- maybe this was discussed previously.

Trying to evaluate C code that consists of lots of little functions with no documentation is like playing nethack (you just entered a maze of twisty little tunnels....).

For example, one of the debian package maintainers introduced this patch to ~/master/master.c:

----------------------------------------------------
@ -195,13 +195,17 @@
     free(a);
 }

-void get_prog(char *path, unsigned size, char *const *cmd)
+void get_prog(char *path, unsigned int size, char *const *cmd)
 {
     if (cmd[0][0] == '/') {
   /* master lacks strlcpy, due to no libcyrus */
   snprintf(path, size, "%s", cmd[0]);
+  path[size-1] = '\0';
+    }
+    else {
+  snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]);
+  path[size-1] = '\0';
     }
-    else snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]);
 }
----------------------------------------------------

The parameter type correction at the top fixes a bug, but what the code null terminating path? If path is used as a string then this is OK, but otherwise it could be overwriting a necessary character. To properly check if this is an OK patch to submit to the bugzilla, I have to track down every use of the get_prog function.


They're both being removed in Cyrus 2.4.  GUID is now compulsary,
so sha1s will be calculated on append.


Not sure what "GUID is now compulsory" means, but it turns out I was wrong and that sha1 has also been compromised
http://www.schneier.com/blog/archives/2005/02/sha1_broken.html

so hopefully this is just being used to generate checksums and not for actually security....

Reply via email to