Hello,
I'm doing an NMU of grande to fix #350290; diff attached.
Thanks,
Matej
diff -u grande-0.6/debian/changelog grande-0.6/debian/changelog
--- grande-0.6/debian/changelog
+++ grande-0.6/debian/changelog
@@ -1,3 +1,10 @@
+grande (0.6-7.1) unstable; urgency=medium
+
+ * NMU.
+ * src/load.c, src/ranking.c: Really fix scanf formats. Closes: #350290.
+
+ -- Matej Vela <[EMAIL PROTECTED]> Mon, 20 Feb 2006 15:13:44 +0100
+
grande (0.6-7) unstable; urgency=low
* debian/control: set policy to 3.6.2.1.
diff -u grande-0.6/src/load.c grande-0.6/src/load.c
--- grande-0.6/src/load.c
+++ grande-0.6/src/load.c
@@ -232,19 +232,18 @@
Root->StageMax = 0;
Root->EnemyCnt = 0;
while(fgets(buff, 255, fp)) {
- int d1, d2, d3, d4;
if (buff[0] == ';' || buff[0] == '\n') continue;
if (!Root->StageMax)
StageDatas = (StageData *)KXL_Malloc(sizeof(StageData));
else
StageDatas = (StageData *)KXL_Realloc(StageDatas, sizeof(StageData) *
(Root->StageMax + 1));
- sscanf(buff,"%d %d %d %d %s %s", d1, d2, d3, d4,
+ sscanf(buff,"%"SCNu16" %"SCNu8" %"SCNu8" %"SCNu16" %s %s",
+ &(StageDatas[Root->StageMax].Time),
+ &(StageDatas[Root->StageMax].CreateNo),
+ &(StageDatas[Root->StageMax].Max),
+ &(StageDatas[Root->StageMax].Step),
&(StageDatas[Root->StageMax].X[0]),
&(StageDatas[Root->StageMax].Y[0]));
- StageDatas[Root->StageMax].Time = d1;
- StageDatas[Root->StageMax].CreateNo = d2;
- StageDatas[Root->StageMax].Max = d3;
- StageDatas[Root->StageMax].Step = d4;
StageDatas[Root->StageMax].Flag = False;
StageDatas[Root->StageMax ++].StepTime = 0;
}
diff -u grande-0.6/src/ranking.c grande-0.6/src/ranking.c
--- grande-0.6/src/ranking.c
+++ grande-0.6/src/ranking.c
@@ -42,17 +42,15 @@
void ReadScore(void)
{
FILE *fp;
- unsigned int d1, d2;
Uint16 i;
if ((fp = fopen(SCORE_PATH "/grande.scores", "r"))) {
- fscanf(fp, "%d", &d1);
- Root->HiScore = d1;
- for (i = 0; i < 5; i ++) {
- fscanf(fp, "%d %d %s", &d1, &d2, Ranking[i].Name);
- Ranking[i].Score = d1;
- Ranking[i].Stage = d2;
- }
+ fscanf(fp, "%"SCNu32, &(Root->HiScore));
+ for (i = 0; i < 5; i ++)
+ fscanf(fp, "%"SCNu32" %"SCNu8" %s",
+ &(Ranking[i].Score),
+ &(Ranking[i].Stage),
+ Ranking[i].Name);
fclose(fp);
} else {
Root->HiScore = 10000;
diff -u grande-0.6/src/grande.h grande-0.6/src/grande.h
--- grande-0.6/src/grande.h
+++ grande-0.6/src/grande.h
@@ -10,6 +10,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <inttypes.h>
#include <sys/types.h>
#include <unistd.h>
#include <KXL.h>