mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-11-29 04:17:16 +00:00
* Rebase patches to Buildroot 2021.02-rc3 * Update Buildroot to 2021.02-rc3 * Declare Kernel headers to be Linux version 5.10 (since they are, and new Buildroot knows about 5.10)
74 lines
2.8 KiB
Diff
74 lines
2.8 KiB
Diff
From b020863a3ea18488448bc09234a4e3b26b68058d Mon Sep 17 00:00:00 2001
|
|
From: Sven Klemm <sven@timescale.com>
|
|
Date: Sat, 19 Sep 2020 19:17:38 +0200
|
|
Subject: [PATCH] Add compatibilty wrapper functions for base64
|
|
encoding/decoding
|
|
|
|
PG13 adds a destination length 4th argument to pg_b64_decode and
|
|
pg_b64_encode functions so this patch adds a macro that translates
|
|
to the 3 argument and 4 argument calls depending on postgres version.
|
|
This patch also adds checking of return values for those functions.
|
|
|
|
https://github.com/postgres/postgres/commit/cfc40d384a
|
|
|
|
Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
|
|
Fetch from: https://github.com/timescale/timescaledb/commit/002510cb01e1d09767a526560f89c1857c1738a2.patch
|
|
---
|
|
src/compat.h | 11 +++++++++++
|
|
tsl/src/compression/compression.c | 12 ++++++++++--
|
|
2 files changed, 21 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/compat.h b/src/compat.h
|
|
index 267bb09a..d84f8754 100644
|
|
--- a/src/compat.h
|
|
+++ b/src/compat.h
|
|
@@ -347,4 +347,15 @@ get_vacuum_options(const VacuumStmt *stmt)
|
|
#endif
|
|
}
|
|
|
|
+/* PG13 added a dstlen parameter to pg_b64_decode and pg_b64_encode */
|
|
+#if PG13_LT
|
|
+#define pg_b64_encode_compat(src, srclen, dst, dstlen) pg_b64_encode((src), (srclen), (dst))
|
|
+#define pg_b64_decode_compat(src, srclen, dst, dstlen) pg_b64_decode((src), (srclen), (dst))
|
|
+#else
|
|
+#define pg_b64_encode_compat(src, srclen, dst, dstlen) \
|
|
+ pg_b64_encode((src), (srclen), (dst), (dstlen))
|
|
+#define pg_b64_decode_compat(src, srclen, dst, dstlen) \
|
|
+ pg_b64_decode((src), (srclen), (dst), (dstlen))
|
|
+#endif
|
|
+
|
|
#endif /* TIMESCALEDB_COMPAT_H */
|
|
diff --git a/tsl/src/compression/compression.c b/tsl/src/compression/compression.c
|
|
index 470ec4b9..169f74e9 100644
|
|
--- a/tsl/src/compression/compression.c
|
|
+++ b/tsl/src/compression/compression.c
|
|
@@ -1424,7 +1424,11 @@ tsl_compressed_data_in(PG_FUNCTION_ARGS)
|
|
|
|
decoded_len = pg_b64_dec_len(input_len);
|
|
decoded = palloc(decoded_len + 1);
|
|
- decoded_len = pg_b64_decode(input, input_len, decoded);
|
|
+ decoded_len = pg_b64_decode_compat(input, input_len, decoded, decoded_len);
|
|
+
|
|
+ if (decoded_len < 0)
|
|
+ elog(ERROR, "could not decode base64-encoded compressed data");
|
|
+
|
|
decoded[decoded_len] = '\0';
|
|
data = (StringInfoData){
|
|
.data = decoded,
|
|
@@ -1446,7 +1450,11 @@ tsl_compressed_data_out(PG_FUNCTION_ARGS)
|
|
const char *raw_data = VARDATA(bytes);
|
|
int encoded_len = pg_b64_enc_len(raw_len);
|
|
char *encoded = palloc(encoded_len + 1);
|
|
- encoded_len = pg_b64_encode(raw_data, raw_len, encoded);
|
|
+ encoded_len = pg_b64_encode_compat(raw_data, raw_len, encoded, encoded_len);
|
|
+
|
|
+ if (encoded_len < 0)
|
|
+ elog(ERROR, "could not base64-encode compressed data");
|
|
+
|
|
encoded[encoded_len] = '\0';
|
|
|
|
PG_RETURN_CSTRING(encoded);
|
|
--
|
|
2.29.2
|
|
|