Skip to content

Commit 1d8575f

Browse files
authored
Merge pull request #4721 from RalfJung/libc-env-cstr
libc-env test: use C string literals
2 parents 686487b + 0cb11c5 commit 1d8575f

File tree

1 file changed

+18
-24
lines changed

1 file changed

+18
-24
lines changed

src/tools/miri/tests/pass-dep/libc/libc-env.rs

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,88 +4,82 @@
44
use std::ffi::CStr;
55

66
fn test_getenv() {
7-
let s = unsafe { libc::getenv(b"MIRI_ENV_VAR_TEST\0".as_ptr().cast()) };
7+
let s = unsafe { libc::getenv(c"MIRI_ENV_VAR_TEST".as_ptr()) };
88
assert!(!s.is_null());
99
let value = unsafe { CStr::from_ptr(s).to_str().unwrap() };
1010
assert_eq!(value, "0");
1111

1212
// Get a non-existing environment variable
13-
let s = unsafe { libc::getenv(b"MIRI_TEST_NONEXISTENT_VAR\0".as_ptr().cast()) };
13+
let s = unsafe { libc::getenv(c"MIRI_TEST_NONEXISTENT_VAR".as_ptr()) };
1414
assert!(s.is_null());
1515

1616
// Empty string should not crash
17-
let s = unsafe { libc::getenv(b"\0".as_ptr().cast()) };
17+
let s = unsafe { libc::getenv(c"".as_ptr()) };
1818
assert!(s.is_null());
1919
}
2020

2121
fn test_setenv() {
2222
// Set a new environment variable
23-
let result = unsafe {
24-
libc::setenv(b"MIRI_TEST_VAR\0".as_ptr().cast(), b"test_value\0".as_ptr().cast(), 1)
25-
};
23+
let result = unsafe { libc::setenv(c"MIRI_TEST_VAR".as_ptr(), c"test_value".as_ptr(), 1) };
2624
assert_eq!(result, 0);
2725

2826
// Verify it was set
29-
let s = unsafe { libc::getenv(b"MIRI_TEST_VAR\0".as_ptr().cast()) };
27+
let s = unsafe { libc::getenv(c"MIRI_TEST_VAR".as_ptr()) };
3028
assert!(!s.is_null());
3129
let value = unsafe { CStr::from_ptr(s).to_str().unwrap() };
3230
assert_eq!(value, "test_value");
3331

3432
// Test overwriting an existing variable
35-
let result = unsafe {
36-
libc::setenv(b"MIRI_TEST_VAR\0".as_ptr().cast(), b"new_value\0".as_ptr().cast(), 1)
37-
};
33+
let result = unsafe { libc::setenv(c"MIRI_TEST_VAR".as_ptr(), c"new_value".as_ptr(), 1) };
3834
assert_eq!(result, 0);
3935

4036
// Verify it was updated
41-
let s = unsafe { libc::getenv(b"MIRI_TEST_VAR\0".as_ptr().cast()) };
37+
let s = unsafe { libc::getenv(c"MIRI_TEST_VAR".as_ptr()) };
4238
assert!(!s.is_null());
4339
let value = unsafe { CStr::from_ptr(s).to_str().unwrap() };
4440
assert_eq!(value, "new_value");
4541

4642
// Test invalid parameters
47-
let result = unsafe { libc::setenv(std::ptr::null(), b"value\0".as_ptr().cast(), 1) };
43+
let result = unsafe { libc::setenv(std::ptr::null(), c"value".as_ptr(), 1) };
4844
assert_eq!(result, -1);
4945

50-
let result = unsafe { libc::setenv(b"\0".as_ptr().cast(), b"value\0".as_ptr().cast(), 1) };
46+
let result = unsafe { libc::setenv(c"".as_ptr(), c"value".as_ptr(), 1) };
5147
assert_eq!(result, -1);
5248

53-
let result =
54-
unsafe { libc::setenv(b"INVALID=NAME\0".as_ptr().cast(), b"value\0".as_ptr().cast(), 1) };
49+
let result = unsafe { libc::setenv(c"INVALID=NAME".as_ptr(), c"value".as_ptr(), 1) };
5550
assert_eq!(result, -1);
5651
}
5752

5853
fn test_unsetenv() {
5954
// Set a variable
60-
let result = unsafe {
61-
libc::setenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast(), b"to_be_unset\0".as_ptr().cast(), 1)
62-
};
55+
let result =
56+
unsafe { libc::setenv(c"MIRI_TEST_UNSET_VAR".as_ptr(), c"to_be_unset".as_ptr(), 1) };
6357
assert_eq!(result, 0);
6458

6559
// Verify it exists
66-
let s = unsafe { libc::getenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) };
60+
let s = unsafe { libc::getenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) };
6761
assert!(!s.is_null());
6862

6963
// Unset it
70-
let result = unsafe { libc::unsetenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) };
64+
let result = unsafe { libc::unsetenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) };
7165
assert_eq!(result, 0);
7266

7367
// Verify it was unset
74-
let s = unsafe { libc::getenv(b"MIRI_TEST_UNSET_VAR\0".as_ptr().cast()) };
68+
let s = unsafe { libc::getenv(c"MIRI_TEST_UNSET_VAR".as_ptr()) };
7569
assert!(s.is_null());
7670

7771
// Test unsetting a non-existing variable (should succeed)
78-
let result = unsafe { libc::unsetenv(b"MIRI_TEST_NONEXISTENT_VAR\0".as_ptr().cast()) };
72+
let result = unsafe { libc::unsetenv(c"MIRI_TEST_NONEXISTENT_VAR".as_ptr()) };
7973
assert_eq!(result, 0);
8074

8175
// Test invalid parameters
8276
let result = unsafe { libc::unsetenv(std::ptr::null()) };
8377
assert_eq!(result, -1);
8478

85-
let result = unsafe { libc::unsetenv(b"\0".as_ptr().cast()) };
79+
let result = unsafe { libc::unsetenv(c"".as_ptr()) };
8680
assert_eq!(result, -1);
8781

88-
let result = unsafe { libc::unsetenv(b"INVALID=NAME\0".as_ptr().cast()) };
82+
let result = unsafe { libc::unsetenv(c"INVALID=NAME".as_ptr()) };
8983
assert_eq!(result, -1);
9084
}
9185

0 commit comments

Comments
 (0)