httpd/carddav from git sources

Johan Hattne johan at hattne.se
Wed Jun 29 08:55:54 EDT 2016


Hi Ellie & Ken;

> On Jun 28, 2016, at 20:47, ellie timoney <ellie at fastmail.com> wrote:
> 
> Hi Johan,
> 
>> In the unpatched code, a sasl_http_request_t structure is created on the
>> stack and a pointer to it is copied to httpd_saslconn using
>> sasl_setprop().  When the structure goes out of scope, there is no
>> guarantee that its members will be preserved.  A diff against the code I
>> just cloned (cyrus-imapd-3.0.0-beta2-294-ga42b500) is attached.
> 
> I think you're onto something here (though the attachment is missing):
> 
> Looking only at the cyrus-imapd code, I would have supposed that
> sasl_setprop() promised to take a copy of the provided value, not just
> the pointer, and that it was therefore fine for the original
> sasl_http_request_t structure to go out of scope.
> 
> But looking at cyrus-sasl code, it looks like sasl_setprop() *generally*
> takes a copy of the provided value, but for a few cases -- one of which
> is SASL_HTTP_REQUEST -- it just copies the pointer.
> 
> I'm not sure if this is a bug in cyrus-sasl, or in cyrus-imapd, but one
> of them is clearly wrong.  The man page for sasl_setprop() makes no
> promises in either direction, but also doesn't document
> SASL_HTTP_REQUEST at all, so the intent remains unclear.
> 
> Ken, what do you think?  IMO, sasl_setprop() should strictly and
> consistently make its own copy of the provided value, and promise thus,
> in which case the cyrus-imapd code is good.  But there might be API
> change ramifications here to be wary of?
> 
> I'm curious, how did you come across this?

I’m not sure how to best deal with it; hence a patch (regenerated and attached this time) instead of a pull request.

I ran into this while playing around with digest authentication in carddav.  Authentication relies on the method, which is passed to libsasl in the sasl_http_request_t structure.

// Cheers; Johan 


> On Tue, Jun 28, 2016, at 05:31 PM, Johan Hattne wrote:
>> 
>>> On Jun 26, 2016, at 20:02, ellie timoney <ellie at fastmail.com> wrote:
>>> 
>>> Hi Johan,
>>> 
>>> I don't know how your git repository got into that state...
>>> 
>>>> $ git describe
>>>> cyrus-imapd-2.5-snapshot-autoconf-and-automake-3857-g4049dd2
>>> 
>>> This says that the nearest tag your git can find is
>>> "cyrus-imapd-2.5-snapshot-autoconf-and-automake"(which is over four
>>> years old), and that your branch is 3857 commits ahead of that tag (but
>>> the "cyrus-imapd-2.5.0" release tag is only 1796 commits ahead, so why
>>> didn't describe find that, instead?), and that the commit id of your
>>> branch tip is "4049dd2" (which I don't have, presumably because it's
>>> your local commit containing your changes).
>>> 
>>> You probably want to refetch entirely I suspect [but keep reading first]
>>> 
>>>> * remote origin
>>>>   Fetch URL: git://git.cyrusimap.org/cyrus-imapd
>>>>   Push  URL: git://git.cyrusimap.org/cyrus-imapd
>>>>   HEAD branch: master
>>> 
>>> I think these URLs are wrong/old.  If you can even fetch from them
>>> anymore, do they update?  Look at the dates on the recent commits -- are
>>> they ancient?  ('git log --format=fuller' to see commit dates).
>>> 
>>> But anyway, we just moved our repositories to github last week, so
>>> anything you get from your old origin is going to be stale now
>>> regardless.  https://github.com/cyrusimap/cyrus-imapd is the github page
>>> with the clone/fork/etc links.
>> 
>> Thanks a lot, Ellie;
>> 
>> I’m confused about the repositories; I didn’t commit anything and the
>> last log entries are from August 2015.  Nevertheless, I cloned from
>> GitHub as per above and imap-makefile.patch is indeed obsolete.  However,
>> I find that the httpd patch, or something addressing the same symptom, is
>> still necessary.
>> 
>> In the unpatched code, a sasl_http_request_t structure is created on the
>> stack and a pointer to it is copied to httpd_saslconn using
>> sasl_setprop().  When the structure goes out of scope, there is no
>> guarantee that its members will be preserved.  A diff against the code I
>> just cloned (cyrus-imapd-3.0.0-beta2-294-ga42b500) is attached.
>> 
>>>> I got this all from
>>>> https://cyrusimap.org/mediawiki/index.php/Contribute#Anonymous_GIT_Access;
>>>> the text indicates that development is actually happening elsewhere, but
>>>> it has never been clear to me what the relationship between the
>>>> repositories is.
>>> 
>>> Okay, that mediawiki is ancient -- I actually thought it was gone
>>> already -- so that explains the old info.   I guess you got there from
>>> Google, because it hasn't been linked from cyrusimap.org for ages.
>>> 
>>> Anyway, I suspect once you set up the correct git remote, and fetch from
>>> that, your build troubles will go away.
>> 
>> Yes, I think I got to the mediawiki via Google.  
>> 
>> // Best wishes; Johan
>> 
>> 
>>> On Fri, Jun 24, 2016, at 11:33 PM, Johan Hattne wrote:
>>>> Hi Ellie;
>>>> 
>>>> $ git remote show origin | head -n 4
>>>> * remote origin
>>>>   Fetch URL: git://git.cyrusimap.org/cyrus-imapd
>>>>   Push  URL: git://git.cyrusimap.org/cyrus-imapd
>>>>   HEAD branch: master
>>>> $ git describe
>>>> cyrus-imapd-2.5-snapshot-autoconf-and-automake-3857-g4049dd2
>>>> 
>>>> I got this all from
>>>> https://cyrusimap.org/mediawiki/index.php/Contribute#Anonymous_GIT_Access;
>>>> the text indicates that development is actually happening elsewhere, but
>>>> it has never been clear to me what the relationship between the
>>>> repositories is.
>>>> 
>>>> // Best wishes; Johan
>>>> 
>>>>> On Jun 23, 2016, at 19:08, ellie timoney via Info-cyrus <info-cyrus at lists.andrew.cmu.edu> wrote:
>>>>> 
>>>>> Hi Johan,
>>>>> 
>>>>> What revision are these patches against?
>>>>> 
>>>>> The Makefile.am patch is unnecessary, and doesn't apply cleanly anyway,
>>>>> so I suspect you're looking at an old revision.
>>>>> 
>>>>> I haven't studied the httpd patch in depth yet.
>>>>> 
>>>>> Cheers,
>>>>> 
>>>>> ellie
>>>>> 
>>>>> On Thu, Jun 23, 2016, at 12:59 AM, Johan Hattne via Info-cyrus wrote:
>>>>>> Dear all;
>>>>>> 
>>>>>> To make carddav run from git sources
>>>>>> (git://git.cyrusimap.org/cyrus-imapd) I had to apply attached tiny
>>>>>> patches; the Makefile.am patch addresses a use-before-definition issue
>>>>>> which causes automake-1.14.1 to fall over, the httpd patch ensures that
>>>>>> the sasl_http_request_t structure which is set as a property of
>>>>>> httpd_saslconn does not go out of scope before it is used (I suppose this
>>>>>> behavior is a tad system-dependent).  Apologies if both these issues have
>>>>>> already been addressed elsewhere.
>>>>>> 
>>>>>> // Best wishes; Johan
>>>>>> 
>>>>>> ----
>>>>>> Cyrus Home Page: http://www.cyrusimap.org/
>>>>>> List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
>>>>>> To Unsubscribe:
>>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus
>>>>>> Email had 2 attachments:
>>>>>> + imap-httpd.patch
>>>>>> 1k (text/plain)
>>>>>> + imap-makefile.patch
>>>>>> 1k (text/plain)
>>>>> ----
>>>>> Cyrus Home Page: http://www.cyrusimap.org/
>>>>> List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
>>>>> To Unsubscribe:
>>>>> https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus
>>>> 
>> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: imap-httpd.patch
Type: application/octet-stream
Size: 818 bytes
Desc: not available
URL: <http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20160629/193e5cef/attachment.obj>


More information about the Info-cyrus mailing list