On Tue, Mar 20, 2018 at 10:33 PM, Eric Covener <[email protected]> wrote: > On Tue, Mar 20, 2018 at 5:22 PM, Yann Ylavic <[email protected]> wrote: >> On Tue, Mar 20, 2018 at 10:17 PM, <[email protected]> wrote: >>> Author: covener >>> Date: Tue Mar 20 21:17:18 2018 >>> New Revision: 1827359 >>> >>> URL: http://svn.apache.org/viewvc?rev=1827359&view=rev >>> Log: >>> PR62200: EBCDIC: ap_rgetline APR_ENOSPC >>> >>> On EBCDIC systems, translation does not occur in ap_rgetline() if the line >>> is >>> larger than the buffer size. >>> >>> Submitted By: Hank Ibell >>> Committed By: covener >>> >>> Modified: >>> httpd/httpd/trunk/CHANGES >>> httpd/httpd/trunk/server/protocol.c >> [] >>> >>> Modified: httpd/httpd/trunk/server/protocol.c >>> URL: >>> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/protocol.c?rev=1827359&r1=1827358&r2=1827359&view=diff >>> ============================================================================== >>> --- httpd/httpd/trunk/server/protocol.c (original) >>> +++ httpd/httpd/trunk/server/protocol.c Tue Mar 20 21:17:18 2018 >>> @@ -476,7 +476,7 @@ AP_DECLARE(apr_status_t) ap_rgetline(cha >>> apr_status_t rv; >>> >>> rv = ap_rgetline_core(s, n, read, r, fold, bb); >>> - if (rv == APR_SUCCESS) { >>> + if (rv == APR_SUCCESS || APR_STATUS_IS_ENOSPC(rv)) { >>> ap_xlate_proto_from_ascii(*s, *read); >>> } >>> return rv; >> >> Since ap_rgetline_core() is accurate/safe about the returned *read >> (and even NUL byte), can/should not we do this unconditionally? > > Maybe, but e.g. even in its current incarnation that early APR_BADARG > return does not set *read.
Yeah, just noticed that, r1827362 :/
