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?

Reply via email to