fix segfault in audio on v1 chips (SDK uses old version of "stat") (#621)

pull/623/head
Alexander Pankov 2023-01-26 10:55:38 +03:00 committed by GitHub
parent 294d1203c8
commit e9487d4321
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 0 deletions

View File

@ -9,6 +9,10 @@ HISILICON_OSDRV_HI3516CV100_SITE =
HISILICON_OSDRV_HI3516CV100_LICENSE = MIT
HISILICON_OSDRV_HI3516CV100_LICENSE_FILES = LICENSE
define HISILICON_OSDRV_HI3516CV100_BUILD_CMDS
$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/libhisicompat all
endef
define HISILICON_OSDRV_HI3516CV100_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/script/S95hisilicon
@ -65,6 +69,7 @@ define HISILICON_OSDRV_HI3516CV100_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/sensor/*.so
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/lib/libaec.so
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/lib/libanr.so
@ -89,6 +94,8 @@ define HISILICON_OSDRV_HI3516CV100_INSTALL_TARGET_CMDS
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/lib/libupvqe.so
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/lib/libVoiceEngine.so
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/files/lib/libvqev2.so
$(INSTALL) -D -m 0755 $(BR2_EXTERNAL_HISILICON_PATH)/package/hisilicon-osdrv-hi3516cv100/libhisicompat/libhisicompat.so $(TARGET_DIR)/usr/lib
endef
$(eval $(generic-package))

View File

@ -0,0 +1,14 @@
LIB_NAME := libhisicompat
SRCS := sTaT.c
OBJS := sTaT.o
all: $(LIB_NAME).so
$(LIB_NAME).so: $(OBJS)
$(CC) -shared -o $@ $(OBJS)
clean:
@rm -f $(OBJS) $(LIB_NAME).so

View File

@ -0,0 +1,23 @@
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
struct ugly_fake_stat {
unsigned long long A;
unsigned long long B;
unsigned int st_mode; /* File mode. */
};
int sTaT(const char *pathname, struct stat *statbuf)
{
struct stat good_struct_stat;
memset(&good_struct_stat, 0, sizeof(struct stat));
int ret = stat(pathname, &good_struct_stat);
struct ugly_fake_stat* ugly = (struct ugly_fake_stat*)statbuf;
ugly->st_mode = good_struct_stat.st_mode;
return ret;
}