This repository was archived by the owner on May 27, 2026. It is now read-only.
Commit 41444cc
committed
BUG: Replace strncpy with snprintf to ensure NUL termination
GCC's -Wstringop-truncation flagged 6 calls in itkScancoImageIO.cxx
where strncpy was invoked with a bound equal to the destination size.
When the source string is at least as long as the destination, strncpy
leaves the buffer without a NUL terminator, causing undefined behavior
in subsequent C-string accessors (GetVersion, GetPatientName, etc.).
The in-memory header buffers (m_Version[18], m_PatientName[42],
m_CreationDate[32], m_ModificationDate[32], m_RescaleUnits[18],
m_CalibrationData[66]) are explicitly sized two bytes wider than the
on-disk fixed-width fields (16, 40, 8/decoded-32, 32, 16, 64) so that a
NUL terminator always fits; itkISQHeaderIO.cxx:137 documents this with
an explicit '\\0' write.
Switch all six metadata-import sites and the five (six counting
ModificationDate) public Set*() inline accessors to
std::snprintf(dst, sizeof(dst), "%s", src), which always
NUL-terminates and silently truncates oversized input. Add <cstdio> to
both translation units.1 parent 8c51433 commit 41444cc
2 files changed
Lines changed: 27 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| |||
167 | 168 | | |
168 | 169 | | |
169 | 170 | | |
170 | | - | |
| 171 | + | |
171 | 172 | | |
172 | 173 | | |
173 | 174 | | |
| |||
179 | 180 | | |
180 | 181 | | |
181 | 182 | | |
182 | | - | |
| 183 | + | |
| 184 | + | |
183 | 185 | | |
184 | 186 | | |
185 | 187 | | |
| |||
191 | 193 | | |
192 | 194 | | |
193 | 195 | | |
194 | | - | |
| 196 | + | |
| 197 | + | |
195 | 198 | | |
196 | 199 | | |
197 | 200 | | |
| |||
284 | 287 | | |
285 | 288 | | |
286 | 289 | | |
287 | | - | |
| 290 | + | |
288 | 291 | | |
289 | 292 | | |
290 | 293 | | |
| |||
296 | 299 | | |
297 | 300 | | |
298 | 301 | | |
299 | | - | |
| 302 | + | |
| 303 | + | |
300 | 304 | | |
301 | 305 | | |
302 | 306 | | |
| |||
308 | 312 | | |
309 | 313 | | |
310 | 314 | | |
311 | | - | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
312 | 319 | | |
313 | 320 | | |
314 | 321 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| |||
354 | 355 | | |
355 | 356 | | |
356 | 357 | | |
357 | | - | |
| 358 | + | |
358 | 359 | | |
359 | 360 | | |
360 | 361 | | |
361 | | - | |
| 362 | + | |
| 363 | + | |
362 | 364 | | |
363 | 365 | | |
364 | 366 | | |
365 | 367 | | |
366 | 368 | | |
367 | 369 | | |
368 | 370 | | |
369 | | - | |
| 371 | + | |
| 372 | + | |
370 | 373 | | |
371 | 374 | | |
372 | 375 | | |
373 | | - | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
374 | 380 | | |
375 | 381 | | |
376 | 382 | | |
| |||
399 | 405 | | |
400 | 406 | | |
401 | 407 | | |
402 | | - | |
| 408 | + | |
| 409 | + | |
403 | 410 | | |
404 | 411 | | |
405 | 412 | | |
406 | | - | |
| 413 | + | |
| 414 | + | |
407 | 415 | | |
408 | 416 | | |
409 | 417 | | |
| |||
0 commit comments