시스템 호출 LKM에서 시스템 호출자의 uid를 얻기 위해 cred.h를 사용할 때 문제가 발생합니다.

시스템 호출 LKM에서 시스템 호출자의 uid를 얻기 위해 cred.h를 사용할 때 문제가 발생합니다.

uid내 시스템 호출을 호출하는 프로세스 실행기를 가져오려고 합니다 . 제가 사용하는 매크로 linux/cred.h는 입니다 current_uid().

문제는 내가 모르는 유형인 kuid_t. 따라서 반환 값을 int정적 변수 유형 에 저장할 수 없습니다 . 다음은 코드 및 오류의 일부입니다.

static int getuid(void){
    return current_uid();
}

static int caller_uid = getuid();

실수:

error: incompatible types when returning type ‘kuid_t’ {aka ‘const struct <anonymous>’} but ‘int’ was expected
  current_cred()->xxx;   \

답변1

kuid_tlinux/uidgid.h하나의 멤버로 구성된 단순한 구조 로 정의됩니다 uid_t.

typedef struct {
    uid_t val;
} kuid_t;

uid_t당신은 사용할 수 있어야하며 current_uid().val단지 uid_t가치를 얻는 것입니다 usigned int.

관련 정보