From 946dbb00fe4b2a75c688a470fc0c3924aa018a24 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date: Sun, 14 Jul 2024 11:39:49 +0200
Subject: [PATCH] Adjust base64 function handling
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In order to support libcs that do not provide b64_pton(), one of the
Debian patches adds a copy of b64_pton() and b64_ntop(). However, no
prototype is added for those functions, causing an "implicit
declaration" warning... or error depending on the compiler version
used:

core/adbd/adb_auth_client.c:75:15: error: implicit declaration of function ‘b64_pton’ [-Wimplicit-function-declaration]

This patch adds appropriate prototypes, but while at it, also renames
the internal copy of b64_*() functions to have an adb_ prefix in order
to clarify things and not clash with definitions potentially coming
from the C library.

Upstream: N/A, we're too far from upstream
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 core/adb/adb_auth_client.c  | 3 ++-
 core/adbd/adb_auth_client.c | 3 ++-
 core/adbd/base64.c          | 4 ++--
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c
index 0b4913e..25b9828 100644
--- a/core/adb/adb_auth_client.c
+++ b/core/adb/adb_auth_client.c
@@ -45,6 +45,7 @@ static char *key_paths[] = {
 static fdevent listener_fde;
 static int framework_fd = -1;
 
+extern int adb_b64_pton(char const *src, u_char *target, size_t targsize);
 
 static void read_keys(const char *file, struct listnode *list)
 {
@@ -72,7 +73,7 @@ static void read_keys(const char *file, struct listnode *list)
         if (sep)
             *sep = '\0';
 
-        ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);
+        ret = adb_b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);
         if (ret != sizeof(key->key)) {
             D("%s: Invalid base64 data ret=%d\n", file, ret);
             free(key);
diff --git a/core/adbd/adb_auth_client.c b/core/adbd/adb_auth_client.c
index 0b4913e..25b9828 100644
--- a/core/adbd/adb_auth_client.c
+++ b/core/adbd/adb_auth_client.c
@@ -45,6 +45,7 @@ static char *key_paths[] = {
 static fdevent listener_fde;
 static int framework_fd = -1;
 
+extern int adb_b64_pton(char const *src, u_char *target, size_t targsize);
 
 static void read_keys(const char *file, struct listnode *list)
 {
@@ -72,7 +73,7 @@ static void read_keys(const char *file, struct listnode *list)
         if (sep)
             *sep = '\0';
 
-        ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);
+        ret = adb_b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);
         if (ret != sizeof(key->key)) {
             D("%s: Invalid base64 data ret=%d\n", file, ret);
             free(key);
diff --git a/core/adbd/base64.c b/core/adbd/base64.c
index 7270703..91fc1b2 100644
--- a/core/adbd/base64.c
+++ b/core/adbd/base64.c
@@ -134,7 +134,7 @@ static const char Pad64 = '=';
    */
 
 int
-b64_ntop(src, srclength, target, targsize)
+adb_b64_ntop(src, srclength, target, targsize)
 	u_char const *src;
 	size_t srclength;
 	char *target;
@@ -212,7 +212,7 @@ b64_ntop(src, srclength, target, targsize)
  */
 
 int
-b64_pton(src, target, targsize)
+adb_b64_pton(src, target, targsize)
 	char const *src;
 	u_char *target;
 	size_t targsize;
-- 
2.47.0

