[Mod] First commit

This commit is contained in:
2022-10-31 22:18:58 +08:00
commit 1c8a3d9709
13090 changed files with 526733 additions and 0 deletions

View File

@ -0,0 +1,162 @@
[PATCH] Fix makefiles for out-of-tree build
Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
debian/makefiles/adb.mk | 10 +++++-----
debian/makefiles/adbd.mk | 33 ++++++++++++++++-----------------
debian/makefiles/fastboot.mk | 17 +++++++++--------
3 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/debian/makefiles/adb.mk b/debian/makefiles/adb.mk
index d9d4feb..654b9f1 100644
--- a/debian/makefiles/adb.mk
+++ b/debian/makefiles/adb.mk
@@ -1,5 +1,6 @@
# Makefile for adb; from https://heiher.info/2227.html
+VPATH+= $(SRCDIR)/core/adb
SRCS+= adb.c
SRCS+= adb_client.c
SRCS+= adb_auth_host.c
@@ -17,7 +18,7 @@ SRCS+= usb_linux.c
SRCS+= usb_vendors.c
SRCS+= utils.c
-VPATH+= ../libcutils
+VPATH+= $(SRCDIR)/core/libcutils
SRCS+= abort_socket.c
SRCS+= socket_inaddr_any_server.c
SRCS+= socket_local_client.c
@@ -28,7 +29,7 @@ SRCS+= socket_network_client.c
SRCS+= list.c
SRCS+= load_file.c
-VPATH+= ../libzipfile
+VPATH+= $(SRCDIR)/core/libzipfile
SRCS+= centraldir.c
SRCS+= zipfile.c
@@ -37,9 +38,8 @@ CPPFLAGS+= -DADB_HOST=1
CPPFLAGS+= -DHAVE_FORKEXEC=1
CPPFLAGS+= -DHAVE_SYMLINKS
CPPFLAGS+= -DHAVE_TERMIO_H
-CPPFLAGS+= -I.
-CPPFLAGS+= -I../include
-CPPFLAGS+= -I../../../external/zlib
+CPPFLAGS+= -I$(SRCDIR)/core/adb
+CPPFLAGS+= -I$(SRCDIR)/core/include
LIBS+= -lc -lpthread -lz -lcrypto
diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk
index 94d3a90..49dab8c 100644
--- a/debian/makefiles/adbd.mk
+++ b/debian/makefiles/adbd.mk
@@ -1,18 +1,6 @@
# Makefile for adbd
-VPATH+= ../libcutils
-SRCS+= abort_socket.c
-SRCS+= socket_inaddr_any_server.c
-SRCS+= socket_local_client.c
-SRCS+= socket_local_server.c
-SRCS+= socket_loopback_client.c
-SRCS+= socket_loopback_server.c
-SRCS+= socket_network_client.c
-SRCS+= list.c
-SRCS+= load_file.c
-SRCS+= android_reboot.c
-
-#VPATH+= ../adb
+VPATH+= $(SRCDIR)/core/adbd
SRCS+= adb.c
SRCS+= backup_service.c
SRCS+= fdevent.c
@@ -31,7 +19,19 @@ SRCS+= log_service.c
SRCS+= utils.c
SRCS+= base64.c
-VPATH+= ../libzipfile
+VPATH+= $(SRCDIR)/core/libcutils
+SRCS+= abort_socket.c
+SRCS+= socket_inaddr_any_server.c
+SRCS+= socket_local_client.c
+SRCS+= socket_local_server.c
+SRCS+= socket_loopback_client.c
+SRCS+= socket_loopback_server.c
+SRCS+= socket_network_client.c
+SRCS+= list.c
+SRCS+= load_file.c
+SRCS+= android_reboot.c
+
+VPATH+= $(SRCDIR)/core/libzipfile
SRCS+= centraldir.c
SRCS+= zipfile.c
@@ -40,10 +40,9 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter
CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1
CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE
CPPFLAGS+= -DHAVE_TERMIO_H
-CPPFLAGS+= -I.
-CPPFLAGS+= -I../include
-CPPFLAGS+= -I../../../external/zlib
CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0`
+CPPFLAGS+= -I$(SRCDIR)/core/adbd
+CPPFLAGS+= -I$(SRCDIR)/core/include
LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0`
diff --git a/debian/makefiles/fastboot.mk b/debian/makefiles/fastboot.mk
index 9e8b751..94a069b 100644
--- a/debian/makefiles/fastboot.mk
+++ b/debian/makefiles/fastboot.mk
@@ -1,5 +1,6 @@
# Makefile for fastboot; from https://heiher.info/2227.html
+VPATH+= $(SRCDIR)/core/fastboot
SRCS+= bootimg.c
SRCS+= engine.c
SRCS+= fastboot.c
@@ -7,11 +8,11 @@ SRCS+= protocol.c
SRCS+= usb_linux.c
SRCS+= util_linux.c
-VPATH+= ../libzipfile
+VPATH+= $(SRCDIR)/core/libzipfile
SRCS+= centraldir.c
SRCS+= zipfile.c
-VPATH+= ../libsparse
+VPATH+= $(SRCDIR)/core/libsparse
SRCS+= backed_block.c
SRCS+= sparse_crc32.c
SRCS+= sparse.c
@@ -19,7 +20,7 @@ SRCS+= sparse_read.c
SRCS+= sparse_err.c
SRCS+= output_file.c
-VPATH+= ../../extras/ext4_utils/
+VPATH+= $(SRCDIR)/extras/ext4_utils/
SRCS+= make_ext4fs.c
SRCS+= crc16.c
SRCS+= ext4_utils.c
@@ -31,11 +32,11 @@ SRCS+= extent.c
SRCS+= wipe.c
SRCS+= sha1.c
-CPPFLAGS+= -I.
-CPPFLAGS+= -I../include
-CPPFLAGS+= -I../mkbootimg
-CPPFLAGS+= -I../../extras/ext4_utils/
-CPPFLAGS+= -I../libsparse/include/
+CPPFLAGS+= -I$(SRCDIR)/core/fastboot
+CPPFLAGS+= -I$(SRCDIR)/core/include
+CPPFLAGS+= -I$(SRCDIR)/core/mkbootimg
+CPPFLAGS+= -I$(SRCDIR)/extras/ext4_utils/
+CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/
LIBS+= -lz -lselinux
--
2.5.1

View File

@ -0,0 +1,264 @@
[PATCH] Fix adbd for non-Ubuntu systems
Remove glib/dbus dependencies and partially restore services.c to be
closer to the original source code in order to run on systems without
sudo.
Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
core/adbd/adb.c | 1 -
core/adbd/services.c | 160 ++++-------------------------------------------
debian/makefiles/adbd.mk | 4 +-
3 files changed, 14 insertions(+), 151 deletions(-)
diff --git a/core/adbd/adb.c b/core/adbd/adb.c
index d90e6b8..7fe6445 100644
--- a/core/adbd/adb.c
+++ b/core/adbd/adb.c
@@ -1165,7 +1165,6 @@ void build_local_name(char* target_str, size_t target_size, int server_port)
#if !ADB_HOST
static int should_drop_privileges() {
- return 1;
#ifndef ALLOW_ADBD_ROOT
return 1;
#else /* ALLOW_ADBD_ROOT */
diff --git a/core/adbd/services.c b/core/adbd/services.c
index 05bd0d0..5adcefe 100644
--- a/core/adbd/services.c
+++ b/core/adbd/services.c
@@ -20,15 +20,6 @@
#include <string.h>
#include <errno.h>
#include <pwd.h>
-#include <glib.h>
-#include <gio/gio.h>
-
-#define UNITY_SERVICE "com.canonical.UnityGreeter"
-#define GREETER_OBJ "/"
-#define GREETER_INTERFACE "com.canonical.UnityGreeter"
-#define PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
-#define ACTIVE_PROPERTY "IsActive"
-#define UNLOCK_PATH "/userdata/.adb_onlock"
#include "sysdeps.h"
@@ -268,11 +259,11 @@ static int create_service_thread(void (*func)(int, void *), void *cookie)
}
#if !ADB_HOST
-static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, const char *arg2, const char *arg3, const char *arg4, pid_t *pid)
+static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, pid_t *pid)
{
#ifdef HAVE_WIN32_PROC
- D("create_subprocess(cmd=%s, arg0=%s, arg1=%s, arg2=%s, arg3=%, arg4=%ss)\n", cmd, arg0, arg1, arg2, arg3, arg4);
- fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s %s %s %s)\n", cmd, arg0, arg1, arg2, arg3, arg4);
+ D("create_subprocess(cmd=%s, arg0=%s, arg1=%s)\n", cmd, arg0, arg1);
+ fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s)\n", cmd, arg0, arg1);
return -1;
#else /* !HAVE_WIN32_PROC */
char *devname;
@@ -327,7 +318,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1
} else {
D("adb: unable to open %s\n", text);
}
- execl(cmd, cmd, arg0, arg1, arg2, arg3, arg4, NULL);
+ execl(cmd, cmd, arg0, arg1, NULL);
fprintf(stderr, "- exec '%s' failed: %s (%d) -\n",
cmd, strerror(errno), errno);
exit(-1);
@@ -342,7 +333,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1
}
#endif /* !ABD_HOST */
-#if ADB_HOST
+#if ADB_HOST || ADBD_NON_ANDROID
#define SHELL_COMMAND "/bin/sh"
#else
#define SHELL_COMMAND "/system/bin/sh"
@@ -380,139 +371,16 @@ static void subproc_waiter_service(int fd, void *cookie)
}
}
-int is_phone_locked() {
- GError *error = NULL;
- GVariant *variant = NULL;
- GDBusConnection *connection = NULL;
-
- if (g_file_test(UNLOCK_PATH, G_FILE_TEST_EXISTS)) {
- D("unlock path present.");
- return 0;
- }
-
- // check if the environment variable is present, if not we grab it from
- // the phablet user
- if (g_getenv("DBUS_SESSION_BUS_ADDRESS") == NULL) {
- D("DBUS_SESSION_BUS_ADDRESS missing.\n");
- struct passwd *pw = getpwuid(AID_SHELL);
- char user_id[15];
- gchar *path = NULL;
- gchar *contents = NULL;
- gchar *session_path = NULL;
-
- snprintf(user_id, sizeof user_id, "%d", pw->pw_uid);
-
- path = g_build_filename("/run", "user", user_id, "dbus-session", NULL);
-
- g_file_get_contents(path, &contents, NULL, &error);
- session_path = g_strstrip(g_strsplit(contents, "DBUS_SESSION_BUS_ADDRESS=", -1)[1]);
- D("Session bus is %s\n", session_path);
-
- // path is not longer used
- g_free(path);
-
- if (error != NULL) {
- g_clear_error(&error);
- D("Couldn't set session bus\n");
- return 1;
- }
-
- g_setenv("DBUS_SESSION_BUS_ADDRESS", session_path, TRUE);
- g_free(contents);
- }
-
- // set the uid to be able to connect to the phablet user session bus
- setuid(AID_SHELL);
- connection = g_dbus_connection_new_for_address_sync(g_getenv("DBUS_SESSION_BUS_ADDRESS"),
- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
- NULL,
- NULL,
- &error);
- if (connection == NULL) {
- D("session bus not available: %s", error->message);
- g_error_free (error);
- return 1;
- }
-
- variant = g_dbus_connection_call_sync(connection,
- UNITY_SERVICE,
- GREETER_OBJ,
- PROPERTIES_INTERFACE,
- "Get",
- g_variant_new("(ss)", GREETER_INTERFACE, ACTIVE_PROPERTY),
- g_variant_type_new("(v)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
-
- if (error != NULL) {
- D("Could not get property: %s", error->message);
- g_object_unref(connection);
- g_error_free(error);
- return 1;
- }
-
- if (variant == NULL) {
- D("Failed to get property '%s': %s", "IsActive", error->message);
- g_object_unref(connection);
- g_error_free(error);
- return 1;
- }
-
- variant = g_variant_get_variant(g_variant_get_child_value(variant, 0));
-
- int active = 1;
- if (!g_variant_get_boolean(variant)) {
- active = 0;
- }
-
- // get back to be root and return the value
- g_object_unref(connection);
- g_variant_unref(variant);
- setuid(0);
- return active;
-}
-
static int create_subproc_thread(const char *name)
{
- if (is_phone_locked() ) {
- fprintf(stderr, "device is locked\n");
- return -1;
- }
-
stinfo *sti;
adb_thread_t t;
int ret_fd;
pid_t pid;
-
- struct passwd *user = getpwuid(getuid());
- char *shell;
- char *shellopts = "-c";
- char *home;
- char *sudo = "/usr/bin/sudo";
- char useropt[256] = "-u";
-
- if (user->pw_name)
- strcat(useropt, user->pw_name);
-
- if (user && user->pw_shell) {
- shell = user->pw_shell;
- shellopts = "-cl";
- } else {
- shell = SHELL_COMMAND;
- }
-
- if (user->pw_dir)
- home = user->pw_dir;
- if(chdir(home) < 0 )
- return 1;
-
if(name) {
- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, name, &pid);
+ ret_fd = create_subprocess(SHELL_COMMAND, "-c", name, &pid);
} else {
- shellopts = "-l";
- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, 0, &pid);
+ ret_fd = create_subprocess(SHELL_COMMAND, "-", 0, &pid);
}
D("create_subprocess() ret_fd=%d pid=%d\n", ret_fd, pid);
@@ -585,17 +453,13 @@ int service_to_fd(const char *name)
} else if (!strncmp(name, "log:", 4)) {
ret = create_service_thread(log_service, get_log_file_path(name + 4));
} else if(!HOST && !strncmp(name, "shell:", 6)) {
- if (!is_phone_locked() ) {
- if(name[6]) {
- ret = create_subproc_thread(name + 6);
- } else {
- ret = create_subproc_thread(0);
- }
+ if(name[6]) {
+ ret = create_subproc_thread(name + 6);
+ } else {
+ ret = create_subproc_thread(0);
}
} else if(!strncmp(name, "sync:", 5)) {
- if (!is_phone_locked() ) {
- ret = create_service_thread(file_sync_service, NULL);
- }
+ ret = create_service_thread(file_sync_service, NULL);
} else if(!strncmp(name, "remount:", 8)) {
ret = create_service_thread(remount_service, NULL);
} else if(!strncmp(name, "reboot:", 7)) {
diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk
index 49dab8c..22c1816 100644
--- a/debian/makefiles/adbd.mk
+++ b/debian/makefiles/adbd.mk
@@ -40,11 +40,11 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter
CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1
CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE
CPPFLAGS+= -DHAVE_TERMIO_H
-CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0`
+CPPFLAGS+= -DADBD_NON_ANDROID
CPPFLAGS+= -I$(SRCDIR)/core/adbd
CPPFLAGS+= -I$(SRCDIR)/core/include
-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0`
+LIBS+= -lc -lpthread -lz -lcrypto -lcrypt
OBJS= $(patsubst %, %.o, $(basename $(SRCS)))
--
2.5.1

View File

@ -0,0 +1,36 @@
[PATCH] Fix build issue with uclibc
Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
core/adbd/adb_auth_client.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c
index 0b4913e..068d837 100644
--- a/core/adb/adb_auth_client.c
+++ b/core/adb/adb_auth_client.c
@@ -72,7 +72,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 = 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..068d837 100644
--- a/core/adbd/adb_auth_client.c
+++ b/core/adbd/adb_auth_client.c
@@ -72,7 +72,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 = 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);
--
2.6.1

View File

@ -0,0 +1,54 @@
[PATCH] Fix build issue with musl
arpa/nameser.h doesn't use the same macro name to avoid several
inclusions.
Finally had an issue with framebuffer_service.c since it was missing the
TEMP_FAILURE_RETRY macro.
Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
core/adbd/arpa_nameser.h | 12 +++++++++---
core/adbd/base64.c | 1 -
core/adbd/framebuffer_service.c | 1 +
core/adbd/qemu_pipe.h | 1 -
core/include/cutils/android_reboot.h | 8 ++++++--
core/include/cutils/bitops.h | 10 ++++++----
core/include/cutils/partition_utils.h | 8 ++++++--
extras/ext4_utils/sha1.c | 3 ---
extras/ext4_utils/sha1.h | 13 ++++++-------
9 files changed, 34 insertions(+), 23 deletions(-)
diff --git a/core/adbd/arpa_nameser.h b/core/adbd/arpa_nameser.h
index 438dc04..b2a28d6 100644
--- a/core/adbd/arpa_nameser.h
+++ b/core/adbd/arpa_nameser.h
@@ -52,6 +52,8 @@
#ifndef _ARPA_NAMESER_H_
#define _ARPA_NAMESER_H_
+#ifndef _ARPA_NAMESER_H
+#define _ARPA_NAMESER_H
#define BIND_4_COMPAT
@@ -574,4 +579,5 @@ __END_DECLS
#define XLOG(...) do {} while (0)
#endif
+#endif /* !_ARPA_NAMESER_H */
#endif /* !_ARPA_NAMESER_H_ */
diff --git a/core/adbd/framebuffer_service.c b/core/adbd/framebuffer_service.c
index 20c08d2..48e0241 100644
--- a/core/adbd/framebuffer_service.c
+++ b/core/adbd/framebuffer_service.c
@@ -26,6 +26,7 @@
#include "fdevent.h"
#include "adb.h"
+#include <cutils/fs.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
--
2.6.1

View File

@ -0,0 +1,35 @@
makefiles: use pkgconf to get libs deps
LIBS lists library dependencies without taking into account static linking
that need ordered listing and more libraries listed since differently from
shared linking dependency is not transparent(i.e. -lcrypto could need
-latomic etc.).
Replace -lcrypto with `pkg-config --libs libcrypto` command to be sure all
needed libraries are listed during linking.
Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
---
diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk
--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk 2019-04-08 16:05:02.967710428 +0200
+++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk 2019-04-08 16:30:42.463084426 +0200
@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID
CPPFLAGS+= -I$(SRCDIR)/core/adbd
CPPFLAGS+= -I$(SRCDIR)/core/include
-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt
+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt
OBJS= $(patsubst %, %.o, $(basename $(SRCS)))
diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk
--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk 2019-04-08 16:05:02.959701400 +0200
+++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk 2019-04-08 16:31:06.529426250 +0200
@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H
CPPFLAGS+= -I$(SRCDIR)/core/adb
CPPFLAGS+= -I$(SRCDIR)/core/include
-LIBS+= -lc -lpthread -lz -lcrypto
+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto`
OBJS= $(SRCS:.c=.o)

View File

@ -0,0 +1,61 @@
Fix build on big endian systems
The usb_linux_client.c file defines cpu_to_le16/32 by using the C
library htole16/32 function calls. However, cpu_to_le16/32 are used
when initializing structures, i.e in a context where a function call
is not allowed.
It works fine on little endian systems because htole16/32 are defined
by the C library as no-ops. But on big-endian systems, they are
actually doing something, which might involve calling a function,
causing build failures.
To solve this, we simply open-code cpu_to_le16/32 in a way that allows
them to be used when initializing structures.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Index: b/core/adb/usb_linux_client.c
===================================================================
--- a/core/adb/usb_linux_client.c
+++ b/core/adb/usb_linux_client.c
@@ -34,8 +34,15 @@
#define MAX_PACKET_SIZE_FS 64
#define MAX_PACKET_SIZE_HS 512
-#define cpu_to_le16(x) htole16(x)
-#define cpu_to_le32(x) htole32(x)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define cpu_to_le16(x) (x)
+# define cpu_to_le32(x) (x)
+#else
+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
+# define cpu_to_le32(x) \
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+#endif
struct usb_handle
{
Index: b/core/adbd/usb_linux_client.c
===================================================================
--- a/core/adbd/usb_linux_client.c
+++ b/core/adbd/usb_linux_client.c
@@ -34,8 +34,15 @@
#define MAX_PACKET_SIZE_FS 64
#define MAX_PACKET_SIZE_HS 512
-#define cpu_to_le16(x) htole16(x)
-#define cpu_to_le32(x) htole32(x)
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define cpu_to_le16(x) (x)
+# define cpu_to_le32(x) (x)
+#else
+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
+# define cpu_to_le32(x) \
+ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \
+ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+#endif
struct usb_handle
{

View File

@ -0,0 +1,41 @@
Include cdefs.h wherever it is needed
cdefs.h is included from within a lot of glibc headers, so it almost
invariably and automagically gets pulled in with glibc.
However, this might not be the case with other C libraries. musl does
not provide cdefs.h so it does not include it from its own headers
(cdefs.h must be provided separately).
So we must include it when we are going to use macros it provides.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
core/adbd/services.c | 1 +
core/libcutils/android_reboot.c | 1 +
2 files changed, 2 insertions(+), 0 deletion(-)
diff --git a/core/adbd/services.c b/core/adbd/services.c
index 20c08d2..48e0241 100644
--- a/core/adbd/services.c
+++ b/core/adbd/services.c
@@ -20,6 +20,7 @@
#include <string.h>
#include <errno.h>
#include <pwd.h>
+#include <sys/cdefs.h>
#include "sysdeps.h"
diff --git a/core/libcutils/android_reboot.c b/core/libcutils/android_reboot.c
index 20c08d2..48e0241 100644
--- a/core/libcutils/android_reboot.c
+++ b/core/libcutils/android_reboot.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <linux/reboot.h>
#include <sys/syscall.h>
+#include <sys/cdefs.h>
#include <cutils/android_reboot.h>

View File

@ -0,0 +1,42 @@
usb_linux.c: fix minor()/major() build failure due to glibc 2.28
glibc 2.28 no longer includes <sys/sysmacros.h> from <sys/types.h>,
and therefore <sys/sysmacros.h> must be included explicitly when
major()/minor() are used.
This commit adds a patch to directly include <sys/sysmacros.h> into
all usb_linux.c files where minor() and major() macros are used.
diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c
--- host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c 2013-02-18 15:49:03.000000000 +0100
+++ host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c 2018-09-09 11:47:16.476292546 +0200
@@ -20,6 +20,7 @@
#include <string.h>
#include <sys/ioctl.h>
+#include <sys/sysmacros.h>
#include <sys/types.h>
#include <sys/time.h>
#include <dirent.h>
diff -urpN host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c
--- host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c 2018-09-09 02:32:57.154503866 +0200
+++ host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c 2018-09-09 11:47:28.148353880 +0200
@@ -20,6 +20,7 @@
#include <string.h>
#include <sys/ioctl.h>
+#include <sys/sysmacros.h>
#include <sys/types.h>
#include <sys/time.h>
#include <dirent.h>
diff -urpN host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c
--- host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c 2013-02-18 15:49:03.000000000 +0100
+++ host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c 2018-09-09 11:46:53.028169154 +0200
@@ -33,6 +33,7 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
+#include <sys/sysmacros.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>

View File

@ -0,0 +1,48 @@
From d24abbec201975a5eb7f8589614cfb424b8c80b6 Mon Sep 17 00:00:00 2001
From: Alex Kaplan <kaplan2539@gmail.com>
Date: Sat, 10 Nov 2018 19:50:51 -0800
Subject: [PATCH] Fix makefiles for out-of-tree ext4_utils build
Signed-off-by: Alex Kaplan <kaplan2539@gmail.com>
---
debian/makefiles/ext4_utils.mk | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/debian/makefiles/ext4_utils.mk b/debian/makefiles/ext4_utils.mk
index cb64916..c5904bf 100644
--- a/debian/makefiles/ext4_utils.mk
+++ b/debian/makefiles/ext4_utils.mk
@@ -1,6 +1,7 @@
# Makefile for ext4_utils; based on https://heiher.info/2227.html
# Author: Dmitrijs Ledkovs <xnox@ubuntu.com>
+VPATH+=$(SRCDIR)/extras/ext4_utils
SRCS+=make_ext4fs.c
SRCS+=ext4fixup.c
SRCS+=ext4_utils.c
@@ -13,7 +14,7 @@ SRCS+=sha1.c
SRCS+=wipe.c
SRCS+=crc16.c
-VPATH+=../../core/libsparse
+VPATH+=$(SRCDIR)/core/libsparse
SRCS+= backed_block.c
SRCS+= sparse_crc32.c
SRCS+= sparse.c
@@ -31,10 +32,9 @@ SRCS+=img2simg.c
SRCS+=simg2img.c
SRCS+=simg2simg.c
-CPPFLAGS+= -I.
-CPPFLAGS+= -I/usr/include
-CPPFLAGS+= -I../../core/include
-CPPFLAGS+= -I../../core/libsparse/include/
+CPPFLAGS+= -I$(SRCDIR)
+CPPFLAGS+= -I$(SRCDIR)/core/include
+CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/
LIBS+= -lz -lselinux
--
2.7.4

View File

@ -0,0 +1,47 @@
From bb3da0e32be4f2260940edf3ee0f88103dfd0dcc Mon Sep 17 00:00:00 2001
From: Eneas U de Queiroz <cote2004-github@yahoo.com>
Date: Tue, 5 Feb 2019 01:12:19 +0200
Subject: [PATCH] adb: added patch for openssl 1.1.0 compatibility
Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
[Vadim: took only adb related part from
https://github.com/lede-project/source/commit/f63f20fb93c7e67775cb01d97fc88b5b29452b81]
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
---
core/adb/adb_auth_host.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/core/adb/adb_auth_host.c b/core/adb/adb_auth_host.c
index 9039d42..debd2ef 100644
--- a/core/adb/adb_auth_host.c
+++ b/core/adb/adb_auth_host.c
@@ -79,7 +79,13 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey)
}
BN_set_bit(r32, 32);
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ const BIGNUM *rsa_n, *rsa_e;
+ RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL);
+ BN_copy(n, rsa_n);
+#else
BN_copy(n, rsa->n);
+#endif
BN_set_bit(r, RSANUMWORDS * 32);
BN_mod_sqr(rr, r, n, ctx);
BN_div(NULL, rem, n, r32, ctx);
@@ -93,7 +99,11 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey)
BN_div(n, rem, n, r32, ctx);
pkey->n[i] = BN_get_word(rem);
}
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ pkey->exponent = BN_get_word(rsa_e);
+#else
pkey->exponent = BN_get_word(rsa->e);
+#endif
out:
BN_free(n0inv);
--
2.14.1

View File

@ -0,0 +1,82 @@
config BR2_PACKAGE_ANDROID_TOOLS
bool "android-tools"
# Technically, fastboot could build on noMMU systems. But
# since we need at least one of the three sub-options enabled,
# and adb/adbd can't be built on noMMU systems, and fastboot
# has some complicated dependencies, we simply make the whole
# package not available on noMMU platforms.
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_HAS_THREADS
select BR2_PACKAGE_ANDROID_TOOLS_ADBD if \
!BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \
!BR2_PACKAGE_ANDROID_TOOLS_ADB
help
This package contains the fastboot and adb utilities, that
can be used to interact with target devices using of these
protocols.
https://wiki.debian.org/AndroidTools#Original_android-tools_package
if BR2_PACKAGE_ANDROID_TOOLS
# We need kernel headers that support the __SANE_USERSPACE_TYPES__
# mechanism for 64 bits architectures, so that u64 gets defined as
# "unsigned long long" and not "unsigned long". We know that >= 3.16
# is needed for MIPS64 (kernel commit
# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for
# PowerPC64 (kernel commit
# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build
# fails with a bad redefinition of u64 (the android-tools fastboot
# code defines it as "unsigned long long").
config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
bool
default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le)
default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el)
default y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el
config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT
bool "fastboot"
depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux
depends on !BR2_STATIC_LIBS # libselinux
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # libselinux -> libsepol
depends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
select BR2_PACKAGE_LIBSELINUX
select BR2_PACKAGE_ZLIB
help
This option will build and install the fastboot utility for
the target, which can be used to reflash other target devices
implementing the fastboot protocol.
comment "fastboot needs a toolchain w/ threads, dynamic library, gcc >= 5"
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_5
comment "fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)"
depends on !BR2_arc
depends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS
config BR2_PACKAGE_ANDROID_TOOLS_ADB
bool "adb"
depends on BR2_USE_MMU # uses fork()
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_ZLIB
help
This option will build and install the adb utility for the
target, which can be used to interact with other target
devices implementing the ADB protocol.
config BR2_PACKAGE_ANDROID_TOOLS_ADBD
bool "adbd"
depends on BR2_USE_MMU # uses fork()
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_ZLIB
help
This option will build and install the adbd utility for the
target, which can be used to interact with a host machine
implementing the ADB protocol.
endif
comment "android-tools needs a toolchain w/ threads"
depends on BR2_USE_MMU
depends on !BR2_TOOLCHAIN_HAS_THREADS

View File

@ -0,0 +1,41 @@
config BR2_PACKAGE_HOST_ANDROID_TOOLS
bool "host android-tools"
select BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB if \
!BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT
help
This package contains the fastboot and adb utilities, that
can be used to interact with target devices using of these
protocols.
if BR2_PACKAGE_HOST_ANDROID_TOOLS
config BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT
bool "fastboot"
depends on BR2_HOST_GCC_AT_LEAST_5 # host-libselinux -> host-libsepol
help
This option will build and install the fastboot utility for
the host, which can be used to reflash target devices
implementing the fastboot protocol.
comment "fastboot needs a toolchain w/ host gcc >= 5"
depends on !BR2_HOST_GCC_AT_LEAST_5
config BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB
bool "adb"
help
This option will build and install the adb utility for the
host, which can be used to interact with target devices
implementing the ADB protocol.
config BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS
bool "ext4 utils"
depends on BR2_HOST_GCC_AT_LEAST_5 # host-libselinux -> host-libsepol
help
This option will build and install the ext4 utils for the
host, i.e. make_ext4fs, ext4fixup, ext2simg, img2simg,
simg2img and simg2simg.
comment "ext4 utils needs a toolchain w/ host gcc >= 5"
depends on !BR2_HOST_GCC_AT_LEAST_5
endif

View File

@ -0,0 +1,4 @@
# locally computed
sha256 9bfba987e1351b12aa983787b9ae4424ab752e9e646d8e93771538dc1e5d932f android-tools_4.2.2+git20130218.orig.tar.xz
sha256 73c3078de3e44d8a3cadf7a360863c63155d9d558c2f0933cf38ad901a3f5998 android-tools_4.2.2+git20130218-3ubuntu41.debian.tar.gz
sha256 170c5939bf8c8eed1db8f66f2d6155e8c1a3e799e390b55e7aad253195b1ebf5 debian/copyright

View File

@ -0,0 +1,96 @@
################################################################################
#
# android-tools
#
################################################################################
ANDROID_TOOLS_SITE = https://launchpad.net/ubuntu/+archive/primary/+files
ANDROID_TOOLS_VERSION = 4.2.2+git20130218
ANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz
ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41.debian.tar.gz
HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS)
ANDROID_TOOLS_LICENSE = Apache-2.0
ANDROID_TOOLS_LICENSE_FILES = debian/copyright
ANDROID_TOOLS_DEPENDENCIES = host-pkgconf
HOST_ANDROID_TOOLS_DEPENDENCIES = host-pkgconf
# Extract the Debian tarball inside the sources
define ANDROID_TOOLS_DEBIAN_EXTRACT
$(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \
$(ANDROID_TOOLS_DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \
$(TAR) -C $(@D) $(TAR_OPTIONS) -
endef
HOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT
ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT
# Apply the Debian patches before applying the Buildroot patches
define ANDROID_TOOLS_DEBIAN_PATCH
$(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*
endef
HOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH
ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH
ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y)
HOST_ANDROID_TOOLS_BUILD_TARGETS += fastboot
HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-fastboot/fastboot
HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux
endif
ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y)
HOST_ANDROID_TOOLS_BUILD_TARGETS += adb
HOST_ANDROID_TOOLS_INSTALL_TARGETS += build-adb/adb
HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-openssl
endif
ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS),y)
HOST_ANDROID_TOOLS_BUILD_TARGETS += ext4_utils
HOST_ANDROID_TOOLS_INSTALL_TARGETS += \
$(addprefix build-ext4_utils/,make_ext4fs ext4fixup ext2simg img2simg simg2img simg2simg)
HOST_ANDROID_TOOLS_DEPENDENCIES += host-libselinux
endif
ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT),y)
ANDROID_TOOLS_TARGETS += fastboot
ANDROID_TOOLS_DEPENDENCIES += zlib libselinux
endif
ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADB),y)
ANDROID_TOOLS_TARGETS += adb
ANDROID_TOOLS_DEPENDENCIES += zlib openssl
endif
ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADBD),y)
ANDROID_TOOLS_TARGETS += adbd
ANDROID_TOOLS_DEPENDENCIES += zlib openssl
endif
# Build each tool in its own directory not to share object files
define HOST_ANDROID_TOOLS_BUILD_CMDS
$(foreach t,$(HOST_ANDROID_TOOLS_BUILD_TARGETS),\
mkdir -p $(@D)/build-$(t) && \
$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \
-C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep))
endef
define ANDROID_TOOLS_BUILD_CMDS
$(foreach t,$(ANDROID_TOOLS_TARGETS),\
mkdir -p $(@D)/build-$(t) && \
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \
-C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep))
endef
define HOST_ANDROID_TOOLS_INSTALL_CMDS
$(foreach t,$(HOST_ANDROID_TOOLS_INSTALL_TARGETS),\
$(INSTALL) -D -m 0755 $(@D)/$(t) $(HOST_DIR)/bin/$(notdir $(t))$(sep))
endef
define ANDROID_TOOLS_INSTALL_TARGET_CMDS
$(foreach t,$(ANDROID_TOOLS_TARGETS),\
$(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep))
endef
$(eval $(generic-package))
$(eval $(host-generic-package))