File 0344-heart-Use-ntohs-instead-of-manual-conversion.patch of Package erlang

From 05b1c13e36ec49891e89593b25e668e983a4fc41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?= <john@erlang.org>
Date: Tue, 24 Apr 2018 13:30:00 +0200
Subject: [PATCH] heart: Use ntohs instead of manual conversion

Multiplying a signed char by 256 is undefined behavior and caused
problems on some platforms when the length was long enough. We
could cast it to an unsigned int to make it work, but it's best not
to reinvent the wheel.

Fixes OTP-15034
---
 erts/etc/common/heart.c         |  5 +----
 lib/kernel/test/heart_SUITE.erl | 13 ++++++++++---
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/erts/etc/common/heart.c b/erts/etc/common/heart.c
index 01ef840b5d..aaaffbca79 100644
--- a/erts/etc/common/heart.c
+++ b/erts/etc/common/heart.c
@@ -847,11 +847,8 @@ write_message(fd, mp)
   int   fd;
   struct msg *mp;
 {
-  int   len;
-  char* tmp;
+  int len = ntohs(mp->len);
 
-  tmp = (char*) &(mp->len);
-  len = (*tmp * 256) + *(tmp+1); 
   if ((len == 0) || (len > MSG_BODY_SIZE)) {
     return MSG_HDR_SIZE;
   }				/* cc68k wants (char *) */
-- 
2.16.3

openSUSE Build Service is sponsored by