From 52449635b1c7a5dcf17cf8d05f1b37749dc2a77a Mon Sep 17 00:00:00 2001
From: Murai Takashi <tmurai01@gmail.com>
Date: Sat, 20 Jul 2013 20:58:17 +0900
Subject: [PATCH] Fix use of memory after it is freed
---
src/kits/interface/PrintJob.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/kits/interface/PrintJob.cpp b/src/kits/interface/PrintJob.cpp
index 18a58da..90d023b 100644
a
|
b
|
BPrintJob::BeginJob()
|
241 | 241 | return; |
242 | 242 | |
243 | 243 | path.Append(printer); |
244 | | free(printer); |
245 | 244 | |
246 | 245 | char mangledName[B_FILE_NAME_LENGTH]; |
247 | 246 | _GetMangledName(mangledName, B_FILE_NAME_LENGTH); |
248 | 247 | |
249 | 248 | path.Append(mangledName); |
250 | | if (path.InitCheck() != B_OK) |
| 249 | if (path.InitCheck() != B_OK) { |
| 250 | free(printer); |
251 | 251 | return; |
| 252 | } |
252 | 253 | |
253 | 254 | // TODO: fSpoolFileName should store the name only (not path which can be |
254 | 255 | // 1024 bytes long) |
… |
… |
BPrintJob::BeginJob()
|
256 | 257 | fSpoolFile = new BFile(fSpoolFileName, B_READ_WRITE | B_CREATE_FILE); |
257 | 258 | |
258 | 259 | if (fSpoolFile->InitCheck() != B_OK) { |
| 260 | free(printer); |
259 | 261 | CancelJob(); |
260 | 262 | return; |
261 | 263 | } |
… |
… |
BPrintJob::BeginJob()
|
269 | 271 | |
270 | 272 | if (fSpoolFile->Write(&fSpoolFileHeader, sizeof(print_file_header)) |
271 | 273 | != sizeof(print_file_header)) { |
| 274 | free(printer); |
272 | 275 | CancelJob(); |
273 | 276 | return; |
274 | 277 | } |
… |
… |
BPrintJob::BeginJob()
|
277 | 280 | if (!fSetupMessage->HasString(PSRV_FIELD_CURRENT_PRINTER)) |
278 | 281 | fSetupMessage->AddString(PSRV_FIELD_CURRENT_PRINTER, printer); |
279 | 282 | |
| 283 | free(printer); |
280 | 284 | _AddSetupSpec(); |
281 | 285 | _NewPage(); |
282 | 286 | |