ladybird/Userland/Utilities
Ben Wiederhake 3aeb57ed09 AK+Everywhere: Fix data corruption due to code-point-to-char conversion
In particular, StringView::contains(char) is often used with a u32
code point. When this is done, the compiler will for some reason allow
data corruption to occur silently.

In fact, this is one of two reasons for the following OSS Fuzz issue:
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49184
This is probably a very old bug.

In the particular case of URLParser, AK::is_url_code_point got confused:
    return /* ... */ || "!$&'()*+,-./:;=?@_~"sv.contains(code_point);
If code_point is a large code point that happens to have the correct
lower bytes, AK::is_url_code_point is then convinced that the given
code point is okay, even if it is actually problematic.

This commit fixes *only* the silent data corruption due to the erroneous
conversion, and does not fully resolve OSS-Fuzz#49184.
2022-10-09 10:37:20 -06:00
..
abench.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
adjtime.cpp adjtime: Port to LibMain 2022-01-21 01:52:22 +01:00
allocate.cpp allocate: Port to LibMain :^) 2021-11-27 11:14:16 +01:00
aplay.cpp Userland: Unveil /proc/all in applications which require it 2022-10-03 17:09:21 +01:00
arp.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
asctl.cpp LibAudio: Rename ConnectionFromClient to ConnectionToServer 2022-07-19 11:17:45 +01:00
base64.cpp base64: Replace char pointer with StringView 2022-05-02 22:18:27 +02:00
basename.cpp Everywhere: Use default execpromises argument for Core::System::pledge 2021-11-28 08:04:57 +01:00
beep.cpp beep: Port to LibMain :^) 2022-01-09 11:16:00 +03:30
blockdev.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
bt.cpp Everywhere: Use my fairly new and shiny serenityos.org email :^) 2022-06-30 15:59:42 +01:00
cal.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
cat.cpp Everywhere: Use default execpromises argument for Core::System::pledge 2021-11-28 08:04:57 +01:00
checksum.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
chgrp.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
chmod.cpp chmod: Implement the --recursive flag 2022-07-25 15:32:46 +02:00
chown.cpp chown: Implement recursion 2022-07-25 23:52:46 +01:00
chres.cpp Userland: Always construct Application with try_create() 2022-04-18 12:57:34 +02:00
cksum.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
clear.cpp Utilities: Use default execpromises parameter to pledge(..) 2022-04-03 17:13:51 -07:00
CMakeLists.txt Meta: Update jakt build support for fully bootstrapped compiler 2022-09-09 11:23:42 +02:00
cmp.cpp cmp: Implement cmp(1) 2022-03-19 11:01:49 -07:00
comm.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
config.cpp config: Enable adding and removing groups 2022-10-01 13:39:10 +03:30
copy.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
cp.cpp cp: Implement the granular --preserve flag 2022-07-14 00:24:24 +01:00
cpp-lexer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
cpp-parser.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
cpp-preprocessor.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
cut.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
date.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
dd.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
df.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
diff.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
dirname.cpp dirname: Port to LibMain 2021-12-16 02:10:47 -08:00
disasm.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
disk_benchmark.cpp LibCore+Userland: Use StringViews when calling Core::System::open 2022-07-09 09:25:20 +01:00
dmesg.cpp Everywhere: Use default execpromises argument for Core::System::pledge 2021-11-28 08:04:57 +01:00
du.cpp du: Consolidate all "do not print" conditions 2022-07-24 13:32:51 +01:00
echo.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
env.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
errno.cpp errno: Port to LibMain 2022-01-01 14:40:41 +01:00
expr.cpp Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
false.cpp false: Port to LibMain 2022-01-14 19:42:19 +02:00
fdtdump.cpp fdtdump: Port to LibMain 2021-12-16 02:10:47 -08:00
fgrep.cpp Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
file.cpp Utilities/file: Handle all supported audio MIME types 2022-08-16 13:58:51 +01:00
find.cpp Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
flock.cpp LibCore+flock: Make Core::System::waitpid more ergonomic 2022-01-11 16:04:29 +01:00
fortune.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
functrace.cpp Everywhere: Make the codebase more architecture aware 2022-07-27 21:46:42 +00:00
gml-format.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
grep.cpp AK+Everywhere: Fix data corruption due to code-point-to-char conversion 2022-10-09 10:37:20 -06:00
gron.cpp gron: Use StringView literals more (instead of raw C strings) 2021-12-04 14:24:04 +01:00
groupadd.cpp Everywhere: Use my fairly new and shiny serenityos.org email :^) 2022-06-30 15:59:42 +01:00
groupdel.cpp Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
groups.cpp LibCore: Use StringView instead of char * in Account 2022-09-27 21:29:44 +01:00
gunzip.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
gzip.cpp gzip: Don't fail when trying to compress empty files 2022-01-08 15:29:38 +01:00
head.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
headless-browser.cpp AK+Everywhere: Replace "protocol" with "scheme" url helpers 2022-09-29 09:39:04 +01:00
hello-world.jakt Meta+Userland: Add jakt as an optional Lagom Tool 2022-05-23 23:05:45 +02:00
hexdump.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
host.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
hostname.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
id.cpp LibCore: Use StringView instead of char * in Account 2022-09-27 21:29:44 +01:00
ifconfig.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
ini.cpp ini: Use String for arguments 2022-04-25 10:47:56 +02:00
install.cpp LibCore+Userland: Remove File::ensure_parent_directories 2022-04-11 00:08:48 +02:00
jp.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
js.cpp Userland: Move files destined for LibLocale to the Locale namespace 2022-09-05 14:37:16 -04:00
kcov-example.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
keymap.cpp Keymap: Fix switching selected keymap 2022-06-16 14:58:43 +01:00
kill.cpp kill: Parse CLI arguments using Arguments.strings 2022-02-12 10:53:07 -05:00
killall.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
less.cpp less: Show correct line number 2022-09-28 09:42:40 +01:00
ln.cpp ln: Implement correct handling of directories as link targets 2022-07-25 22:21:01 +01:00
logout.cpp Utilities/logout: Refactor to use Core::SessionManagement::logout 2022-10-03 11:11:29 +02:00
ls.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
lsblk.cpp Utilities/lsblk: Remove Interface Type column 2022-08-14 01:09:03 +01:00
lscpu.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
lsirq.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
lsof.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
lspci.cpp Utilities/lspci: Don't unveil /res/pci.ids if not asked to resolve IDs 2022-07-19 11:02:25 +01:00
lsusb.cpp Utilities/lsusb: Fix uninitialized variable error 2022-09-04 13:26:05 -04:00
man.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
markdown-check.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
matroska.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
md.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
mkdir.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
mkfifo.cpp mkfifo: Add support for setting permissions with -m 2022-04-20 18:35:08 +02:00
mknod.cpp mknod: Port to LibMain 2022-01-24 14:01:58 +03:30
mktemp.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
mount.cpp mount: Report error instead of crashing on failure 2022-10-02 21:33:35 +02:00
mv.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
nc.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
netstat.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
nl.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
notify.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
nproc.cpp Everywhere: Use default execpromises argument for Core::System::pledge 2021-11-28 08:04:57 +01:00
ntpquery.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
open.cpp open: Use more StringView instead of const char* 2022-01-31 15:25:07 +01:00
passwd.cpp LibCore: Use StringView instead of char * in Account 2022-09-27 21:29:44 +01:00
paste.cpp Everywhere: Use default StringView constructor over nullptr 2022-07-12 23:11:35 +02:00
pathchk.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
pgrep.cpp pgrep: Port to LibMain 2022-02-10 14:10:58 +00:00
pidof.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
ping.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
pledge.cpp Userland: Consolidate most PATH resolving into a single implementation 2022-08-23 19:00:04 +01:00
pls.cpp pls: Use LibCore::Account::login() instead of manually setting the uid 2022-09-28 00:35:36 +01:00
pmap.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
pmemdump.cpp Userland: Introduce the pmemdump utility 2022-01-08 13:21:16 +02:00
printf.cpp AK: Differ between long and long long formats 2022-04-14 03:12:56 +04:30
pro.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
profile.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
ps.cpp Userland: Fix crash when inputting non-tty device into ps 2022-04-02 21:49:16 +02:00
purge.cpp purge: Port to LibMain 2022-03-22 11:39:20 +01:00
pwd.cpp pwd: Add missing rpath pledge 2022-01-21 22:10:23 +01:00
readelf.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
readlink.cpp readlink: Use StringView instead of const char* 2022-03-24 11:57:51 +01:00
realpath.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
reboot.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
rev.cpp rev: Read from stdin if the filename '-' is given 2022-10-06 16:06:50 +01:00
rm.cpp rm: Port to LibMain 2022-01-25 02:50:10 +00:00
rmdir.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
route.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
run-tests.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
seq.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
shot.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
shuf.cpp shuf: Port to LibMain 2022-01-24 05:38:30 +00:00
shutdown.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
sleep.cpp Utilities: Use default execpromises parameter to pledge(..) 2022-04-03 17:13:51 -07:00
sort.cpp sort: Port to LibMain 2022-01-24 05:38:30 +00:00
sql.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
stat.cpp Utilities: Use default execpromises parameter to pledge(..) 2022-04-03 17:13:51 -07:00
strace.cpp strace: Pledge rpath for searching binaries 2022-08-20 12:28:46 +02:00
stty.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
su.cpp LibCore: Propagate errors from LibCore::Account::login() 2022-09-27 21:29:44 +01:00
sync.cpp sync: Port to LibMain 2022-02-01 04:58:24 +00:00
syscall.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
sysctl.cpp sysctl: Port to LibMain 2022-02-01 04:58:24 +00:00
tac.cpp Userland: Port tac to LibMain 2022-01-09 04:26:16 -08:00
tail.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
tar.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
tee.cpp Everywhere: Use my fairly new and shiny serenityos.org email :^) 2022-06-30 15:59:42 +01:00
telws.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
test-bindtodevice.cpp test-bindtodevice: Port to LibMain 2022-03-29 21:28:29 -07:00
test-fuzz.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
test-imap.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
test-pthread.cpp test-pthread: Port to LibMain and let local functions return ErrorOr<T> 2022-03-29 21:28:29 -07:00
test-unveil.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
test.cpp test: Support more options 2022-10-02 21:33:01 +02:00
test_env.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
timezone.cpp Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2022-01-31 18:23:22 +00:00
top.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
touch.cpp touch: Support custom timestamps 2022-05-21 18:15:00 +02:00
tr.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
traceroute.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
tree.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
true.cpp true: Port to LibMain 2022-03-22 11:39:20 +01:00
truncate.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
tt.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
tty.cpp tty: Port to LibMain 2022-03-29 21:28:29 -07:00
umount.cpp umount: Port to LibMain 2022-01-22 13:31:52 +02:00
uname.cpp uname: Port to LibMain 2022-01-04 07:33:23 +00:00
uniq.cpp uniq: Improve POSIX compliance 2022-09-09 14:11:52 +01:00
unzip.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
update-cpp-test-results.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
uptime.cpp uptime: Port to LibMain :^) 2022-01-02 09:42:56 +00:00
useradd.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
userdel.cpp LibCore: Use StringView instead of char * in Account 2022-09-27 21:29:44 +01:00
usermod.cpp LibCore: Use StringView instead of char * in Account 2022-09-27 21:29:44 +01:00
utmpupdate.cpp Userland: Convert command line arguments to String/StringView 2022-07-12 23:11:35 +02:00
w.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
wallpaper.cpp wallpaper: Add pledge promises 2022-08-02 04:04:08 +00:00
wasm.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
watch.cpp LibCore: Replace the ArgsParser option argument setting with an enum 2022-07-14 00:24:24 +01:00
wc.cpp Utilities: Read positional arguments as Strings not char*s 2022-04-11 21:09:42 +02:00
which.cpp Userland: Consolidate most PATH resolving into a single implementation 2022-08-23 19:00:04 +01:00
whoami.cpp whoami: Port to LibMain :^) 2021-11-30 23:34:40 +01:00
wsctl.cpp Userland: Always construct Application with try_create() 2022-04-18 12:57:34 +02:00
xargs.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
xml.cpp Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
yes.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
zip.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00