- xz.git의 CMakeLists.txt 변경은 Landlock 샌드박스 감지를 헤더 존재 확인에서 실제 컴파일 테스트로 바꾸는 과정에서, 테스트 코드 안에 단독
.문자가 들어간 사례임 - 새 검사는
linux/landlock.h가 있어도 필요한 syscall 정의가 없을 수 있는 시스템을 걸러내기 위해 추가됨 - 컴파일 테스트는
<linux/landlock.h>,<sys/syscall.h>,<sys/prctl.h>를 포함하고prctl,SYS_landlock_create_ruleset,SYS_landlock_restrict_self,LANDLOCK_CREATE_RULESET_VERSION을 참조함 - 기존 기준인
HAVE_LINUX_LANDLOCK_H는 HAVE_LINUX_LANDLOCK으로 바뀌며,SANDBOX_COMPILE_DEFINITION과SANDBOX_FOUND설정도 이 결과를 따름 - 커밋은 Autotools와 CMake 빌드의 Linux Landlock feature test 수정이며, 제공된 diff는 CMake 쪽 변경을 보여줌
CMake의 Landlock 감지 방식 변경
- 대상 파일은 xz.git의 CMakeLists.txt이며, 변경 지점은
# Sandboxing: Landlock블록임 - 기존 CMake 로직은
ENABLE_SANDBOX가ON또는landlock이고SANDBOX_FOUND가 아닐 때check_include_file(linux/landlock.h HAVE_LINUX_LANDLOCK_H)로 헤더 존재만 확인함 - 변경 후에는
check_c_source_compiles로 작은 C 코드를 실제 컴파일해 Landlock 사용 가능 여부를 확인함- 일부 시스템은
linux/landlock.h를 갖고 있어도 Linux Landlock에 필요한 syscall 정의가 없을 수 있음 - 테스트 코드는
<linux/landlock.h>,<sys/syscall.h>,<sys/prctl.h>를 포함함 my_sandbox()안에서prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0),SYS_landlock_create_ruleset,SYS_landlock_restrict_self,LANDLOCK_CREATE_RULESET_VERSION을 참조함
- 일부 시스템은
단독 문자와 변수 이름 변경
- 삽입된 컴파일 테스트 코드의 include 블록 다음에 단독
.줄이 있음 - 결과 변수는
HAVE_LINUX_LANDLOCK_H에서 HAVE_LINUX_LANDLOCK으로 바뀜 - 조건문도
if(HAVE_LINUX_LANDLOCK_H)에서if(HAVE_LINUX_LANDLOCK)로 변경됨 SANDBOX_COMPILE_DEFINITION값은"HAVE_LINUX_LANDLOCK_H"대신"HAVE_LINUX_LANDLOCK"를 사용함- 이후
SANDBOX_FOUND ON설정은 유지됨