--- samples/dcraw_emu.cpp.orig 2011-01-08 14:57:51.035369931 +0700 +++ samples/dcraw_emu.cpp 2011-01-08 15:33:55.222297533 +0700 @@ -390,9 +390,13 @@ if(use_timing) timerprint("LibRaw::dcraw_process()",argv[arg]); - snprintf(outfn,sizeof(outfn), - "%s.%s", - argv[arg], OUT.output_tiff ? "tiff" : (P1.colors>1?"ppm":"pgm")); + strncpy(outfn, argv[arg], sizeof(outfn)); + char *dotp = strrchr(outfn, '.'); + if (!dotp) + dotp = outfn + strlen(outfn); + + snprintf(dotp, sizeof(outfn) - (dotp - outfn), ".%s", + OUT.output_tiff ? "tiff" : (P1.colors > 1 ? "ppm" : "pgm")); if(verbosity) {