view docs/dtd/changes.dtd @ 7119:fef61d26da39

Fixed buffer overread with unix sockets after accept(). Some OSes (notably macOS, NetBSD, and Solaris) allow unix socket addresses larger than struct sockaddr_un. Moreover, some of them (macOS, Solaris) return socklen of the socket address before it was truncated to fit the buffer provided. As such, on these systems socklen must not be used without additional check that it is within the buffer provided. Appropriate checks added to ngx_event_accept() (after accept()), ngx_event_recvmsg() (after recvmsg()), and ngx_set_inherited_sockets() (after getsockname()). We also obtain socket addresses via getsockname() in ngx_connection_local_sockaddr(), but it does not need any checks as it is only used for INET and INET6 sockets (as there can be no wildcard unix sockets).
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 04 Oct 2017 21:19:33 +0300
parents 5e3bda6f5208
children e79c7521aaf4
line wrap: on
line source


<!ENTITY  nbsp         "&#xA0;" >
<!ENTITY  mdash        "&#xA0;- " >


<!ELEMENT change_log   (changes)* >
<!ATTLIST change_log   title  CDATA #REQUIRED >

<!ELEMENT changes      (change)* >
<!ATTLIST changes      ver    CDATA #REQUIRED
                       date   CDATA #REQUIRED
>

<!ELEMENT change       (para)* >
<!ATTLIST change       type (bugfix | feature | change | security | workaround) #IMPLIED >

<!ELEMENT para         (#PCDATA | at | br | nobr)* >
<!ATTLIST para         lang (ru | en) #REQUIRED >

<!ELEMENT at           EMPTY >
<!ELEMENT br           EMPTY >
<!ELEMENT nobr         (#PCDATA) >