File: | src/misc/getrlimit.c |
Location: | line 20, column 29 |
Description: | The left operand of '==' is a garbage value |
1 | #include <sys/resource.h> | |||
2 | #include <errno(*__errno_location()).h> | |||
3 | #include "syscall.h" | |||
4 | #include "libc.h" | |||
5 | ||||
6 | #define FIX(x)do{ if ((x)>=(~0ULL)) (x)=(~0ULL); }while(0) do{ if ((x)>=SYSCALL_RLIM_INFINITY(~0ULL)) (x)=RLIM_INFINITY(~0ULL); }while(0) | |||
7 | ||||
8 | int getrlimit(int resource, struct rlimit *rlim) | |||
9 | { | |||
10 | unsigned long k_rlim[2]; | |||
11 | int ret = syscall(SYS_prlimit64, 0, resource, 0, rlim)__syscall_ret(__syscall4(302,((long) (0)),((long) (resource)) ,((long) (0)),((long) (rlim)))); | |||
12 | if (!ret) { | |||
| ||||
13 | FIX(rlim->rlim_cur)do{ if ((rlim->rlim_cur)>=(~0ULL)) (rlim->rlim_cur)= (~0ULL); }while(0); | |||
14 | FIX(rlim->rlim_max)do{ if ((rlim->rlim_max)>=(~0ULL)) (rlim->rlim_max)= (~0ULL); }while(0); | |||
15 | } | |||
16 | if (!ret || errno(*__errno_location()) != ENOSYS38) | |||
17 | return ret; | |||
18 | if (syscall(SYS_getrlimit, resource, k_rlim)__syscall_ret(__syscall2(97,((long) (resource)),((long) (k_rlim )))) < 0) | |||
19 | return -1; | |||
20 | rlim->rlim_cur = k_rlim[0] == -1UL ? RLIM_INFINITY(~0ULL) : k_rlim[0]; | |||
| ||||
21 | rlim->rlim_max = k_rlim[1] == -1UL ? RLIM_INFINITY(~0ULL) : k_rlim[1]; | |||
22 | FIX(rlim->rlim_cur)do{ if ((rlim->rlim_cur)>=(~0ULL)) (rlim->rlim_cur)= (~0ULL); }while(0); | |||
23 | FIX(rlim->rlim_max)do{ if ((rlim->rlim_max)>=(~0ULL)) (rlim->rlim_max)= (~0ULL); }while(0); | |||
24 | return 0; | |||
25 | } | |||
26 | ||||
27 | LFS64(getrlimit)extern __typeof(getrlimit) getrlimit64 __attribute__((weak, alias ("getrlimit"))); |