Skip to content

Commit fad8feb

Browse files
committed
nested patching works now
Former-commit-id: 449f700 Former-commit-id: dc5ab77722ed7ee49bf0a5e460198c1783e7efe6
1 parent b3325d3 commit fad8feb

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

tools/log4shell/commands/patch.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ func tail(s []string) []string {
194194
}
195195

196196
func addFileToZip(zipWriter *zip.Writer, existingHeader zip.FileHeader, filename string) (err error) {
197+
defer zipWriter.Flush()
198+
197199
fileToZip, err := os.Open(filename)
198200
if err != nil {
199201
log.Error().
@@ -224,6 +226,7 @@ func addFileToZip(zipWriter *zip.Writer, existingHeader zip.FileHeader, filename
224226
Msg("Unable to create zip header")
225227
return
226228
}
229+
227230
_, err = io.Copy(writer, fileToZip)
228231
if err != nil {
229232
log.Error().
@@ -266,19 +269,20 @@ func filterOutJndiLookupFromZip(
266269
if err != nil {
267270
return
268271
}
269-
nestedZipWriter.Flush()
270272

271273
if zipWriter == nil {
272274
filename = outZip.Name()
273275
validOutputFile = true
274276
return
275277
}
276278

279+
nestedZipWriter.Close()
280+
outZip.Close()
281+
277282
err = addFileToZip(zipWriter, existingHeader, outZip.Name())
278283
if err != nil {
279284
return
280285
}
281-
zipWriter.Flush()
282286
return
283287
}
284288

@@ -288,6 +292,8 @@ func copyAndFilterFilesFromZip(
288292
writer *zip.Writer,
289293
nestedPaths []string,
290294
) (err error) {
295+
defer writer.Flush()
296+
291297
nestedPath := head(nestedPaths)
292298
for _, member := range zipReader.File {
293299
if member.Name == nestedPath {
@@ -333,6 +339,15 @@ func copyAndFilterFilesFromZip(
333339
}
334340

335341
if member.FileInfo().IsDir() {
342+
_, err = writer.Create(member.Name)
343+
if err != nil {
344+
log.Error().
345+
Err(err).
346+
Str("memberName", member.Name).
347+
Str("member", fmt.Sprintf("%+v", member.FileHeader)).
348+
Msg("Error while copying zip dir.")
349+
return
350+
}
336351
continue
337352
}
338353

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
172a1004a051c61f3a8abe3ea3ee002e290f15a2
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
214373a78b4024e557c297e5081f9305b65c9587
1+
0578ffb72bc2ade6a743bc18d4d2e03123a1ea64

0 commit comments

Comments
 (0)