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?
