From 676c5b53c2d53d635c23b5c33ebdf083f7e4b258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20M=C3=B3nigo?= Date: Tue, 18 Aug 2026 23:48:04 -0300 Subject: [PATCH] Fix SIN v1/v2 files always falling through to v4 parser The version checks in SinFile's constructor were three independent if statements instead of an if/else-if chain, so any file with version==1 or version==2 was parsed correctly and then immediately re-parsed by the v4 (tar/gzip) branch, which always failed with "Not a sin file" since v1/v2 sin files are not tar/gzip archives. This broke flashing for every device using SIN v1/v2 packages (2011-2012 Xperia line: X10, arc, ray, S, P, U, sola, acro, etc.), confirmed on a Sony Xperia U (ST25i) where loader.sin uses version 2. --- .../src/main/java/org/flashtool/parsers/sin/SinFile.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Flashtool/src/main/java/org/flashtool/parsers/sin/SinFile.java b/Flashtool/src/main/java/org/flashtool/parsers/sin/SinFile.java index 95a894d..87eb4a1 100644 --- a/Flashtool/src/main/java/org/flashtool/parsers/sin/SinFile.java +++ b/Flashtool/src/main/java/org/flashtool/parsers/sin/SinFile.java @@ -88,7 +88,7 @@ public SinFile(File f) throws SinFileException { sinv1.parseHash(sinStream); closeStreams(); } - if (version==2) { + else if (version==2) { sinv2 = sinParserV2.parse(sinStream).mapTo(new org.flashtool.parsers.sin.v2.SinParser()); sinv2.setLength(sinfile.length()); sinv2.setFile(sinfile); @@ -96,7 +96,7 @@ public SinFile(File f) throws SinFileException { sinv2.parseHash(sinStream); closeStreams(); } - if (version==3) { + else if (version==3) { sinv3 = sinParserV3.parse(sinStream).mapTo(new org.flashtool.parsers.sin.v3.SinParser()); sinv3.setLength(sinfile.length()); sinv3.setFile(sinfile);