Skip to content

Commit

Permalink
Sanitize helm names and namespace (#542)
Browse files Browse the repository at this point in the history
Co-authored-by: fcomte <[email protected]>
  • Loading branch information
olevitt and fcomte authored Dec 19, 2024
1 parent fa3cbee commit bc9627a
Showing 1 changed file with 54 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,12 @@ public HelmInstaller installChart(
}
command.append(chart + " ");
command.append("-n ");
if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
safeConcat(command, namespace);
if (StringUtils.isNotBlank(version)) {
if (!semverPattern.matcher(version).matches()) {
Expand Down Expand Up @@ -205,6 +211,18 @@ public HelmInstaller installChart(

public int uninstaller(HelmConfiguration configuration, String name, String namespace)
throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
if (name.length() > 53 || !rfc1123Pattern.matcher(name).matches()) {
throw new IllegalArgumentException(
"Invalid release "
+ name
+ ". Must be 53 or fewer characters and be a valid RFC 1123 string.");
}
if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
StringBuilder command = new StringBuilder("helm uninstall ");
safeConcat(command, name);
command.append(" -n ");
Expand All @@ -215,6 +233,12 @@ public int uninstaller(HelmConfiguration configuration, String name, String name
public HelmLs[] listChartInstall(HelmConfiguration configuration, String namespace)
throws InvalidExitValueException, IOException, InterruptedException, TimeoutException {
StringBuilder command = new StringBuilder("helm ls -a");
if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
if (namespace != null) {
command.append(" -n ");
safeConcat(command, namespace);
Expand All @@ -241,6 +265,18 @@ public String getNotes(HelmConfiguration configuration, String id, String namesp

public HelmReleaseInfo getAll(HelmConfiguration configuration, String id, String namespace) {
StringBuilder command = new StringBuilder("helm get all ");
if (id.length() > 53 || !rfc1123Pattern.matcher(id).matches()) {
throw new IllegalArgumentException(
"Invalid release "
+ id
+ ". Must be 53 or fewer characters and be a valid RFC 1123 string.");
}
if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
safeConcat(command, id);
command.append(" --namespace ");
safeConcat(command, namespace);
Expand All @@ -260,6 +296,18 @@ private String getReleaseInfo(
throw new IllegalArgumentException(
"Invalid info type " + infoType + ", should be manifest, notes or values");
}
if (id.length() > 53 || !rfc1123Pattern.matcher(id).matches()) {
throw new IllegalArgumentException(
"Invalid release "
+ id
+ ". Must be 53 or fewer characters and be a valid RFC 1123 string.");
}
if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
StringBuilder command = new StringBuilder("helm get " + infoType + " ");
try {
safeConcat(command, id);
Expand Down Expand Up @@ -306,7 +354,12 @@ public HelmLs getAppById(HelmConfiguration configuration, String appId, String n
+ appId
+ ". Must be 53 or fewer characters and be a valid RFC 1123 string.");
}

if (namespace.length() > 63 || !rfc1123Pattern.matcher(namespace).matches()) {
throw new IllegalArgumentException(
"Invalid namespace "
+ namespace
+ ". Must be 63 or fewer characters and be a valid RFC 1123 string.");
}
StringBuilder command = new StringBuilder("helm list --filter ");
safeConcat(command, appId);
command.append(" -n ");
Expand Down

0 comments on commit bc9627a

Please sign in to comment.