From 420608bc705c165a707cd757917ba3e5df042b23 Mon Sep 17 00:00:00 2001 From: Matt Stavola Date: Wed, 8 Apr 2020 23:15:33 -0700 Subject: [PATCH 1/2] Error on invalid dependency naming --- src/cargo/util/toml/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 7a2214d6a81..f81af256b9e 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -1082,6 +1082,7 @@ impl TomlManifest { }; for (n, v) in dependencies.iter() { let dep = v.to_dependency(n, cx, kind)?; + validate_package_name(dep.name_in_toml().as_str(), "dependency name", "")?; cx.deps.push(dep); } From fcff51b3e032c5fe79874f5092aa48244510a3f3 Mon Sep 17 00:00:00 2001 From: Matt Stavola Date: Wed, 8 Apr 2020 23:46:30 -0700 Subject: [PATCH 2/2] Add test for bad renaming --- tests/testsuite/build.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index e8bffe5d1b0..04beef388f6 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -911,6 +911,37 @@ required by package `foo v0.0.1 ([CWD])` .run(); } +// Ensure that renamed deps have a valid name +#[cargo_test] +fn cargo_compile_with_invalid_dep_rename() { + let p = project() + .file( + "Cargo.toml", + r#" + [package] + name = "buggin" + version = "0.1.0" + + [dependencies] + "haha this isn't a valid name 🐛" = { package = "libc", version = "0.1" } + "#, + ) + .file("src/main.rs", &main_file(r#""What's good?""#, &[])) + .build(); + + p.cargo("build") + .with_status(101) + .with_stderr( + "\ +error: failed to parse manifest at `[..]` + +Caused by: + invalid character ` ` in dependency name: `haha this isn't a valid name 🐛`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) +", + ) + .run(); +} + #[cargo_test] fn cargo_compile_with_filename() { let p = project()