--- jhead.c.orig.port	Tue Jun  6 18:08:43 2023
+++ jhead.c	Thu Jun  8 07:50:46 2023
@@ -286,7 +286,8 @@
     if (!HasScandate && !ImageInfo.DateTime[0]){
         // Scan date is not in the file yet, and it doesn't have one built in.  Add it.
         char Temp[40];
-        sprintf(Temp, "scan_date=%s", ctime(&ImageInfo.FileDateTime));
+        snprintf(Temp, sizeof(Temp),
+            "scan_date=%s", ctime(&ImageInfo.FileDateTime));
         strncat(OutComment, Temp, MAX_COMMENT_SIZE-5-strlen(OutComment));
         Modified = TRUE;
     }
@@ -318,8 +319,10 @@
 
     if (scale < 0.4) scale = 0.4; // Don't scale down by too much.
 
-    sprintf(CommandString, "mogrify -geometry %dx%d -quality 85 &i",(int)(ImageInfo.Width*scale+0.5),
-                                    (int)(ImageInfo.Height*scale+0.5));
+    snprintf(CommandString, sizeof(CommandString),
+        "mogrify -geometry %dx%d -quality 85 &i",
+        (int)(ImageInfo.Width*scale+0.5), (int)(ImageInfo.Height*scale+0.5));
+
     return TRUE;
 }
 
@@ -662,7 +665,8 @@
                         memcpy(pat, pattern+ppos, 4);
                         pat[a-ppos] = 'd'; // Replace 'i' with 'd' for '%d'
                         pat[a-ppos+1] = '\0';
-                        sprintf(num, pat, FileSequence); // let printf do the number formatting.
+			// let printf do the number formatting.
+			snprintf(num, sizeof(num), pat, FileSequence);
                         nl = strlen(num);
                         l = strlen(pattern+a+1);
                         if (ppos+nl+l+1 >= PATH_MAX) ErrFatal("str overflow");
@@ -678,7 +682,7 @@
         strftime(NewName, PATH_MAX, pattern, &tm);
     }else{
         // My favourite scheme.
-        sprintf(NewName, "%02d%02d-%02d%02d%02d",
+        snprintf(NewName, sizeof(NewName), "%02d%02d-%02d%02d%02d",
              tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
     }
 
@@ -722,7 +726,8 @@
                 printf("%s --> %s\n",FileName, NewName);
 #ifdef _WIN32
                 if (RenameAssociatedFiles){
-                    sprintf(NewName, "%s%s", NewBaseName, NameExtra);
+                    snprintf(NewName, sizeof(NewName),
+			"%s%s", NewBaseName, NameExtra);
                     RenameAssociated(FileName, NewName);
                 }
 #endif
@@ -756,7 +761,8 @@
                 // Unknown orientation, but still modified.
                 return TRUE; // Image is still modified.
             }
-            sprintf(RotateCommand, "jpegtran -trim -%s -outfile &o &i", Argument);
+            snprintf(RotateCommand, sizeof(RotateCommand), 
+                "jpegtran -trim -%s -outfile &o &i", Argument);
             ApplyCommand = RotateCommand;
             DoCommand(FileName, FALSE);
             ApplyCommand = NULL;
@@ -775,7 +781,8 @@
                 strcpy(ThumbTempName_out, FileName);
                 strcat(ThumbTempName_out, ".tho");
                 SaveThumbnail(ThumbTempName_in);
-                sprintf(RotateCommand,"jpegtran -trim -%s -outfile \"%s\" \"%s\"",
+                snprintf(RotateCommand, sizeof(RotateCommand), 
+                    "jpegtran -trim -%s -outfile \"%s\" \"%s\"",
                     Argument, ThumbTempName_out, ThumbTempName_in);
 
                 // Disallow characters in the filenames that could be used to execute arbitrary
@@ -1187,7 +1194,7 @@
 
             // Print to temp buffer first to avoid putting null termination in destination.
             // snprintf() would do the trick, but not available everywhere (like FreeBSD 4.4)
-            sprintf(TempBuf, "%04d:%02d:%02d %02d:%02d:%02d",
+            snprintf(TempBuf, sizeof(TempBuf), "%04d:%02d:%02d %02d:%02d:%02d",
                 tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
                 tm.tm_hour, tm.tm_min, tm.tm_sec);
 
