Re: [notmuch] [PATCH] format_part_json: part_content-data is not null terminated
On Thu, 01 Apr 2010 14:05:06 +0200, Michal Sojka sojk...@fel.cvut.cz wrote: On Thu, 04 Mar 2010, Gregor Hoffleit wrote: - printf (, \content\: %s, json_quote_str (ctx, (char *) part_content-data)); + content_data = talloc_size (ctx, part_content-len+1); + memcpy (content_data, (char *)part_content-data, part_content-len+1); + content_data[part_content-len] = 0; + printf (, \content\: %s, json_quote_str (ctx, content_data)); What about modifying json_quote_str() to accept additional parameter len? If I have 10MB attachment to the email, this unnecessary copy is quite expensive, isn't it? Agreed. How about this patch: http://github.com/dme/notmuch/commit/5f23ae341788d28e455e53488d184d8caaa618c5 ? dme. -- David Edmondson, http://dme.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [notmuch] [PATCH] format_part_json: part_content-data is not null terminated
On Mon, 05 Apr 2010 10:36:38 +0100, David Edmondson d...@dme.org wrote: Agreed. How about this patch: http://github.com/dme/notmuch/commit/5f23ae341788d28e455e53488d184d8caaa618c5 ? Thanks, David. (And thanks also, to David Bremner for providing a version with cleaned-up whitespace issues.) This is pushed now. -Carl PS. David, (Edmonson), putting the actual patch into the email message is preferred. That lets me reply for any review necessary, and also apply the patch when reading email when not online. pgplFFaVVIsvj.pgp Description: PGP signature ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [notmuch] [PATCH] format_part_json: part_content-data is not null terminated
On Thu, 04 Mar 2010 11:49:48 +0100, Gregor Hoffleit gre...@hoffleit.de wrote: In format_part_json, part_content-data is not a null terminated string. I'd like to see this bug fixed, and the patch is pretty small, but... Instead, we have to use part_content-len. + content_data = talloc_size (ctx, part_content-len+1); + memcpy (content_data, (char *)part_content-data, part_content-len+1); Can anyone explain why we copy (what seems to me to be) one extra byte here? In principle reading outside our allocated memory could cause problems; at minimum it makes a false positive for a memory checker like valgrind. David ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [notmuch] [PATCH] format_part_json: part_content-data is not null terminated
Both of you Davids are indeed completely right. Even more since the next command in the patch after memcpy zeroes that byte. This is how it's meant to be: +content_data = talloc_size (ctx, part_content-len+1); +memcpy (content_data, (char *)part_content-data, part_content-len); +content_data[part_content-len] = 0; Should I submit a fixed patch? Mea culpa, Gregor * David Edmondson d...@dme.org [Do Apr 01 13:50:54 +0200 2010] On Thu, 01 Apr 2010 08:40:37 -0300, David Bremner da...@tethera.net wrote: On Thu, 04 Mar 2010 11:49:48 +0100, Gregor Hoffleit gre...@hoffleit.de wrote: In format_part_json, part_content-data is not a null terminated string. I'd like to see this bug fixed, +1. and the patch is pretty small, but... Instead, we have to use part_content-len. +content_data = talloc_size (ctx, part_content-len+1); +memcpy (content_data, (char *)part_content-data, part_content-len+1); Can anyone explain why we copy (what seems to me to be) one extra byte here? In principle reading outside our allocated memory could cause problems; at minimum it makes a false positive for a memory checker like valgrind. Agreed. It looks as though this should copy only part_content-len bytes. dme. -- Gregor Hoffleit gregor.hoffl...@mediasupervision.de Media Supervision Software Consulting GmbH Georg-Friedrich-Haendel-Str. 13, 69214 Eppelheim/Heidelberg Tel: +49 6221 705079-22 / Fax: +49 6221 705079-80 Amtsgericht Mannheim, HRB 336821, Geschäftsführer Reinhard Kratzke http://www.mediasupervision.de/ ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch