diff --git a/netwerk/sctp/src/netinet/sctp_asconf.c b/netwerk/sctp/src/netinet/sctp_asconf.c --- a/netwerk/sctp/src/netinet/sctp_asconf.c +++ b/netwerk/sctp/src/netinet/sctp_asconf.c @@ -30,10 +30,18 @@ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ +#if defined(_WIN32) +// Needed for unified build so that rand_s is available to all unified +// sources. +#if !defined(_CRT_RAND_S) && !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define _CRT_RAND_S +#endif +#endif + #include #include #include #include #include diff --git a/netwerk/sctp/src/netinet/sctp_bsd_addr.c b/netwerk/sctp/src/netinet/sctp_bsd_addr.c --- a/netwerk/sctp/src/netinet/sctp_bsd_addr.c +++ b/netwerk/sctp/src/netinet/sctp_bsd_addr.c @@ -297,18 +297,11 @@ } #endif #if defined(_WIN32) && defined(__Userspace__) -#ifdef MALLOC -#undef MALLOC -#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x)) -#endif -#ifdef FREE -#undef FREE -#define FREE(x) HeapFree(GetProcessHeap(), 0, (x)) -#endif +#define SCTP_BSD_FREE(x) HeapFree(GetProcessHeap(), 0, (x)) static void sctp_init_ifns_for_vrf(int vrfid) { #if defined(INET) || defined(INET6) struct sctp_ifa *sctp_ifa; @@ -334,11 +327,11 @@ return; } /* Get actual adapter information */ if ((Err = GetAdaptersAddresses(AF_INET, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { SCTP_PRINTF("GetAdaptersV4Addresses() failed with error code %d\n", Err); - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); return; } /* Enumerate through each returned adapter and save its information */ for (pAdapt = pAdapterAddrs; pAdapt; pAdapt = pAdapt->Next) { if (pAdapt->IfType == IF_TYPE_IEEE80211 || pAdapt->IfType == IF_TYPE_ETHERNET_CSMACD) { @@ -359,11 +352,11 @@ sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; } } } } - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); #endif #ifdef INET6 AdapterAddrsSize = 0; if ((Err = GetAdaptersAddresses(AF_INET6, 0, NULL, NULL, &AdapterAddrsSize)) != 0) { @@ -379,11 +372,11 @@ return; } /* Get actual adapter information */ if ((Err = GetAdaptersAddresses(AF_INET6, 0, NULL, pAdapterAddrs, &AdapterAddrsSize)) != ERROR_SUCCESS) { SCTP_PRINTF("GetAdaptersV6Addresses() failed with error code %d\n", Err); - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); return; } /* Enumerate through each returned adapter and save its information */ for (pAdapt = pAdapterAddrs; pAdapt; pAdapt = pAdapt->Next) { if (pAdapt->IfType == IF_TYPE_IEEE80211 || pAdapt->IfType == IF_TYPE_ETHERNET_CSMACD) { @@ -401,11 +394,11 @@ sctp_ifa->localifa_flags &= ~SCTP_ADDR_DEFER_USE; } } } } - FREE(pAdapterAddrs); + SCTP_BSD_FREE(pAdapterAddrs); #endif } #elif defined(__Userspace__) static void sctp_init_ifns_for_vrf(int vrfid) diff --git a/netwerk/sctp/src/user_environment.h b/netwerk/sctp/src/user_environment.h --- a/netwerk/sctp/src/user_environment.h +++ b/netwerk/sctp/src/user_environment.h @@ -28,10 +28,19 @@ * SUCH DAMAGE. */ #ifndef _USER_ENVIRONMENT_H_ #define _USER_ENVIRONMENT_H_ + +#if defined(_WIN32) +// Needed for unified build so that rand_s is available to all unified +// sources. +#if !defined(_CRT_RAND_S) && !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) +#define _CRT_RAND_S +#endif +#endif + /* __Userspace__ */ #include #ifdef __FreeBSD__ #ifndef _SYS_MUTEX_H_