Skip to content

Commit 588c6a8

Browse files
committed
[YouTube] Quote signature deobfuscation function name and add semicolon only where needed
1 parent 1fa85ec commit 588c6a8

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSignatureUtils.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.schabi.newpipe.extractor.utils.jsextractor.JavaScriptExtractor;
77

88
import javax.annotation.Nonnull;
9+
import java.util.regex.Pattern;
910

1011
/**
1112
* Utility class to get the signature timestamp of YouTube's base JavaScript player and deobfuscate
@@ -94,7 +95,7 @@ static String getDeobfuscationCode(@Nonnull final String javaScriptPlayerCode)
9495
+ deobfuscationFunctionName
9596
+ "(a);}";
9697

97-
return helperObject + deobfuscationFunction + callerFunction;
98+
return helperObject + deobfuscationFunction + ";" + callerFunction;
9899
} catch (final Exception e) {
99100
throw new ParsingException("Could not parse deobfuscation function", e);
100101
}
@@ -124,25 +125,25 @@ private static String getDeobfuscateFunctionWithLexer(
124125
@Nonnull final String deobfuscationFunctionName) throws ParsingException {
125126
final String functionBase = deobfuscationFunctionName + "=function";
126127
return functionBase + JavaScriptExtractor.matchToClosingBrace(
127-
javaScriptPlayerCode, functionBase) + ";";
128+
javaScriptPlayerCode, functionBase);
128129
}
129130

130131
@Nonnull
131132
private static String getDeobfuscateFunctionWithRegex(
132133
@Nonnull final String javaScriptPlayerCode,
133134
@Nonnull final String deobfuscationFunctionName) throws ParsingException {
134135
final String functionPattern = DEOBF_FUNC_REGEX_START
135-
+ deobfuscationFunctionName.replace("$", "\\$")
136+
+ Pattern.quote(deobfuscationFunctionName)
136137
+ DEOBF_FUNC_REGEX_END;
137-
return "var " + Parser.matchGroup1(functionPattern, javaScriptPlayerCode) + ";";
138+
return "var " + Parser.matchGroup1(functionPattern, javaScriptPlayerCode);
138139
}
139140

140141
@Nonnull
141142
private static String getHelperObject(@Nonnull final String javaScriptPlayerCode,
142143
@Nonnull final String helperObjectName)
143144
throws ParsingException {
144145
final String helperPattern = SIG_DEOBF_HELPER_OBJ_REGEX_START
145-
+ helperObjectName.replace("$", "\\$")
146+
+ Pattern.quote(helperObjectName)
146147
+ SIG_DEOBF_HELPER_OBJ_REGEX_END;
147148
return Parser.matchGroup1(helperPattern, javaScriptPlayerCode)
148149
.replace("\n", "");

0 commit comments

Comments
 (0)