From fc664e93e62645fc6e9659664351e77f3c4b374f Mon Sep 17 00:00:00 2001
From: Josh Bell <josh@lindenlab.com>
Date: Mon, 15 Jan 2007 19:49:52 +0000
Subject: [PATCH] Port fix for SL-32157 "PowerPC Mac crashes when crossing
 regions or teleporting with capabilities turned on" from Branch 1-13-2 r56710
 via partial merge of release-candidate -r 56743:56744

---
 indra/llcommon/llsdutil.cpp | 23 +++++++++++++++++++++++
 indra/llcommon/llsdutil.h   |  4 ++++
 2 files changed, 27 insertions(+)

diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
index 8fe43736e46..7cd0ed4c085 100644
--- a/indra/llcommon/llsdutil.cpp
+++ b/indra/llcommon/llsdutil.cpp
@@ -180,3 +180,26 @@ U64 ll_U64_from_sd(const LLSD& sd)
 
 	return ((U64)high) << 32 | low;
 }
+
+// IP Address (stored in net order in a U32, so don't need swizzling)
+LLSD ll_sd_from_ipaddr(const U32 val)
+{
+	std::vector<U8> v;
+
+	v.resize(4);
+	memcpy(&(v[0]), &val, 4);		/* Flawfinder: ignore */
+
+	return LLSD(v);
+}
+
+U32 ll_ipaddr_from_sd(const LLSD& sd)
+{
+	U32 ret;
+	std::vector<U8> v = sd.asBinary();
+	if (v.size() < 4)
+	{
+		return 0;
+	}
+	memcpy(&ret, &(v[0]), 4);		/* Flawfinder: ignore */
+	return ret;
+}
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index 9369f1a39ff..79961c53118 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -47,4 +47,8 @@ U32 ll_U32_from_sd(const LLSD& sd);
 LLSD ll_sd_from_U64(const U64);
 U64 ll_U64_from_sd(const LLSD& sd);
 
+// IP Address
+LLSD ll_sd_from_ipaddr(const U32);
+U32 ll_ipaddr_from_sd(const LLSD& sd);
+
 #endif // LL_LLSDUTIL_H
-- 
GitLab