Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 5658749

Browse files
committed
filter out malformed skin images
1 parent b39458e commit 5658749

File tree

7 files changed

+11
-5
lines changed

7 files changed

+11
-5
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public Skin read(Path p) {
6262
byteBuffer.put(in);
6363
byteBuffer.rewind();
6464
try (var img = NativeImage.read(byteBuffer)) {
65+
if (img.getWidth() != 64 || img.getHeight() != 64) return null;
6566
slim = (ClientColors.ARGB.alpha(img.getPixelColor(47, 63)) == 0);
6667
}
6768
}

1.20/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public Skin read(Path p) {
5555
var in = Files.readAllBytes(p);
5656
sha256 = Hashing.sha256().hashBytes(in).toString();
5757
try (var img = NativeImage.read(in)) {
58+
if (img.getWidth() != 64 || img.getHeight() != 64) return null;
5859
slim = (ClientColors.ARGB.alpha(img.getPixelColor(47, 63)) == 0);
5960
}
6061
return new Skin.Local(!slim, Hashing.sha512().hashUnencodedChars(p.toString()).toString(), p, sha256);

1.21.7/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public Skin read(Path p) {
5555
var in = Files.readAllBytes(p);
5656
sha256 = Hashing.sha256().hashBytes(in).toString();
5757
try (var img = NativeImage.read(in)) {
58+
if (img.getWidth() != 64 || img.getHeight() != 64) return null;
5859
slim = ClientColors.ARGB.alpha(img.getPixel(47, 63)) == 0;
5960
}
6061
return new Skin.Local(!slim, Hashing.sha512().hashUnencodedChars(p.toString()).toString(), p, sha256);

1.21/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public Skin read(Path p) {
5555
var in = Files.readAllBytes(p);
5656
sha256 = Hashing.sha256().hashBytes(in).toString();
5757
try (var img = NativeImage.read(in)) {
58-
slim = (ClientColors.ARGB.alpha(img.getPixelColor(47, 63)) == 0);
58+
if (img.getWidth() != 64 || img.getHeight() != 64) return null;
59+
slim = ClientColors.ARGB.alpha(img.getPixelColor(47, 63)) == 0;
5960
}
6061
return new Skin.Local(!slim, Hashing.sha512().hashUnencodedChars(p.toString()).toString(), p, sha256);
6162
} catch (Exception e) {

1.8.9/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManagementScreen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public void render(int mouseX, int mouseY, float delta) {
9696
tooltip = null;
9797
super.render(mouseX, mouseY, delta);
9898
if (tooltip != null) {
99-
renderTooltip(tooltip, mouseX, mouseY+20);
99+
renderTooltip(tooltip, mouseX, mouseY + 20);
100100
Lighting.turnOff();
101101
}
102102
}
@@ -177,7 +177,7 @@ protected void drawWidget(int mouseX, int mouseY, float delta) {
177177
this.capesTab = true;
178178
});
179179
navBar.add(capesTab);
180-
var importButton = new VanillaButtonWidget(capesTab.getX()+capesTab.getWidth()-11, capesTab.getY()-13, 11, 11, I18n.translate("skins.manage.import"), btn -> {
180+
var importButton = new VanillaButtonWidget(capesTab.getX() + capesTab.getWidth() - 11, capesTab.getY() - 13, 11, 11, I18n.translate("skins.manage.import"), btn -> {
181181
btn.active = false;
182182
SkinImportUtil.openImportSkinDialog().thenAccept(this::filesDragged).thenRun(() -> btn.active = true);
183183
}) {

1.8.9/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public Skin read(Path p) {
5858
sha256 = Hashing.sha256().hashBytes(in).toString();
5959
try (var bs = new ByteArrayInputStream(in)) {
6060
var img = ImageIO.read(bs);
61+
if (img.getWidth() != 64 || img.getHeight() != 64) return null;
6162
slim = (ClientColors.ARGB.alpha(img.getRGB(47, 63)) == 0);
6263
}
6364
return new Skin.Local(!slim, Hashing.sha512().hashUnencodedChars(p.toString()).toString(), p, sha256);

common/src/main/java/io/github/axolotlclient/modules/auth/skin/SkinImportUtil.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ public static CompletableFuture<List<Path>> openImportSkinDialog() {
3636
return CompletableFuture.supplyAsync(() -> {
3737
try (MemoryStack stack = MemoryStack.stackPush()) {
3838
var pointers = stack.pointers(stack.UTF8("*.png"));
39-
var result = TinyFileDialogs.tinyfd_openFileDialog("Import Skins", FabricLoader.getInstance().getGameDir().toString(), pointers, null, true);
39+
@SuppressWarnings("DataFlowIssue") var result = TinyFileDialogs.tinyfd_openFileDialog("Import Skins",
40+
FabricLoader.getInstance().getGameDir().toString(), pointers, null, true);
4041
if (result != null) {
4142
return Arrays.stream(result.split("\\|"))
42-
.map(Path::of).peek(System.out::println).toList();
43+
.map(Path::of).toList();
4344
}
4445
return List.of();
4546
}

0 commit comments

Comments
 (0)