1
0
Fork 0
forked from len0rd/rockbox

Fixes: snprintf() lengths, buffer sizes.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4596 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2004-05-08 20:05:29 +00:00
parent 50061a9ebe
commit 3eb82028d1

View file

@ -117,7 +117,7 @@ static void draw_calendar(struct shown *shown)
{ {
int w,h; int w,h;
int ws,row,pos,days_per_month,j; int ws,row,pos,days_per_month,j;
char buffer[7]; char buffer[9];
char *Monthname[] = { char *Monthname[] = {
"Jan", "Jan",
"Feb", "Feb",
@ -144,9 +144,9 @@ static void draw_calendar(struct shown *shown)
for (j = 0; j < days_per_month;) for (j = 0; j < days_per_month;)
{ {
if ( (day_has_memo[++j]) || (wday_has_memo[pos]) ) if ( (day_has_memo[++j]) || (wday_has_memo[pos]) )
rb->snprintf(buffer,3,"%02d.", j); rb->snprintf(buffer,4,"%02d.", j);
else else
rb->snprintf(buffer,3,"%02d", j); rb->snprintf(buffer,4,"%02d", j);
rb->lcd_putsxy(ws, (row * h) + 5 ,buffer); rb->lcd_putsxy(ws, (row * h) + 5 ,buffer);
if (shown->mday == j) if (shown->mday == j)
{ {
@ -164,7 +164,7 @@ static void draw_calendar(struct shown *shown)
} }
rb->lcd_drawline(60,LCD_HEIGHT-h-3,60,LCD_HEIGHT-1); rb->lcd_drawline(60,LCD_HEIGHT-h-3,60,LCD_HEIGHT-1);
rb->lcd_drawline(60,LCD_HEIGHT-h-3,LCD_WIDTH-1,LCD_HEIGHT-h-3); rb->lcd_drawline(60,LCD_HEIGHT-h-3,LCD_WIDTH-1,LCD_HEIGHT-h-3);
rb->snprintf(buffer,8,"%s %04d",Monthname[shown->mon-1],shown->year); rb->snprintf(buffer,9,"%s %04d",Monthname[shown->mon-1],shown->year);
rb->lcd_putsxy(62,(LCD_HEIGHT-h-1),buffer); rb->lcd_putsxy(62,(LCD_HEIGHT-h-1),buffer);
shown->lastday = pos; shown->lastday = pos;
rb->lcd_update(); rb->lcd_update();
@ -185,13 +185,14 @@ struct memo {
static int pointer_array[MAX_MEMOS_IN_A_MONTH]; static int pointer_array[MAX_MEMOS_IN_A_MONTH];
static int memos_in_memory = 0; static int memos_in_memory = 0;
static int memos_in_shown_memory = 0; static int memos_in_shown_memory = 0;
static void load_memo(struct shown *shown) static void load_memo(struct shown *shown)
{ {
int i, k, fp; int i, k, fp;
bool exit = false; bool exit = false;
char temp_memo0[0]; char temp_memo1[2];
char temp_memo1[1]; char temp_memo2[3];
char temp_memo3[3]; char temp_memo4[5];
for (k = 0; k < memos_in_memory; k++) for (k = 0; k < memos_in_memory; k++)
{ {
memos[k].day = 0; memos[k].day = 0;
@ -218,16 +219,16 @@ static void load_memo(struct shown *shown)
{ {
memos[memos_in_memory].file_pointer_start = rb->lseek(fp, 0, memos[memos_in_memory].file_pointer_start = rb->lseek(fp, 0,
SEEK_CUR); SEEK_CUR);
if (rb->read(fp, temp_memo1, 2) == 2) if (rb->read(fp, temp_memo2, 2) == 2)
memos[memos_in_memory].day = rb->atoi(&temp_memo1[0]); memos[memos_in_memory].day = rb->atoi(&temp_memo2[0]);
else else
memos[memos_in_memory].day = 0; memos[memos_in_memory].day = 0;
if (rb->read(fp, temp_memo1, 2) == 2) if (rb->read(fp, temp_memo2, 2) == 2)
memos[memos_in_memory].month = rb->atoi(&temp_memo1[0]); memos[memos_in_memory].month = rb->atoi(&temp_memo2[0]);
else else
memos[memos_in_memory].month = 0; memos[memos_in_memory].month = 0;
if (rb->read(fp, temp_memo3, 4) == 4) if (rb->read(fp, temp_memo4, 4) == 4)
memos[memos_in_memory].year = rb->atoi(&temp_memo3[0]); memos[memos_in_memory].year = rb->atoi(&temp_memo4[0]);
else else
memos[memos_in_memory].year = 0; memos[memos_in_memory].year = 0;
/* as the year returned is sometimes yearmonth, ie if yr should = /* as the year returned is sometimes yearmonth, ie if yr should =
@ -236,17 +237,17 @@ static void load_memo(struct shown *shown)
memos[memos_in_memory].year = (memos[memos_in_memory].year - memos[memos_in_memory].year = (memos[memos_in_memory].year -
memos[memos_in_memory].month) / memos[memos_in_memory].month) /
100; 100;
if (rb->read(fp, temp_memo0, 1) == 1) if (rb->read(fp, temp_memo1, 1) == 1)
memos[memos_in_memory].wday = rb->atoi(&temp_memo0[0]); memos[memos_in_memory].wday = rb->atoi(&temp_memo1[0]);
else else
memos[memos_in_memory].wday = 0; memos[memos_in_memory].wday = 0;
if (rb->read(fp, temp_memo0, 1) == 1) if (rb->read(fp, temp_memo1, 1) == 1)
memos[memos_in_memory].type = rb->atoi(&temp_memo0[0]); memos[memos_in_memory].type = rb->atoi(&temp_memo1[0]);
else else
memos[memos_in_memory].type = 0; memos[memos_in_memory].type = 0;
for (k = 0; k <= count; k++) for (k = 0; k <= count; k++)
{ {
if (rb->read(fp, temp_memo0, 1) == 1) if (rb->read(fp, temp_memo1, 1) == 1)
{ {
if ( if (
(memos[memos_in_memory].type < 2) (memos[memos_in_memory].type < 2)
@ -266,7 +267,7 @@ static void load_memo(struct shown *shown)
) )
) )
{ {
if (temp_memo0[0] == '\n') if (temp_memo1[0] == '\n')
{ {
if (memos[memos_in_memory].type > 0) if (memos[memos_in_memory].type > 0)
day_has_memo[memos[memos_in_memory].day] = day_has_memo[memos[memos_in_memory].day] =
@ -277,11 +278,11 @@ static void load_memo(struct shown *shown)
memos[memos_in_memory++].file_pointer_end = memos[memos_in_memory++].file_pointer_end =
rb->lseek(fp, 0, SEEK_CUR); rb->lseek(fp, 0, SEEK_CUR);
} }
else if ( (temp_memo0[0] != '\r') && else if ( (temp_memo1[0] != '\r') &&
(temp_memo0[0] != '\t') ) (temp_memo1[0] != '\t') )
memos[memos_in_memory].message[k] = temp_memo0[0]; memos[memos_in_memory].message[k] = temp_memo1[0];
} }
if (temp_memo0[0] == '\n') if (temp_memo1[0] == '\n')
break; break;
} }
else else
@ -320,15 +321,15 @@ static bool save_memo(int changed, bool new_mod, struct shown *shown)
} }
if (new_mod) if (new_mod)
{ {
rb->snprintf(temp, 2, "%02d", memos[changed].day); rb->snprintf(temp, 3, "%02d", memos[changed].day);
rb->write(fq,temp,2); rb->write(fq,temp,2);
rb->snprintf(temp, 2, "%02d", memos[changed].month); rb->snprintf(temp, 3, "%02d", memos[changed].month);
rb->write(fq,temp,2); rb->write(fq,temp,2);
rb->snprintf(temp, 4, "%04d", memos[changed].year); rb->snprintf(temp, 5, "%04d", memos[changed].year);
rb->write(fq,temp,4); rb->write(fq,temp,4);
rb->snprintf(temp, 1, "%01d", memos[changed].wday); rb->snprintf(temp, 2, "%01d", memos[changed].wday);
rb->write(fq,temp,1); rb->write(fq,temp,1);
rb->snprintf(temp, 1, "%01d", memos[changed].type); rb->snprintf(temp, 2, "%01d", memos[changed].type);
rb->write(fq,temp,1); rb->write(fq,temp,1);
rb->snprintf(temp, rb->strlen(memos[changed].message)+1, rb->snprintf(temp, rb->strlen(memos[changed].message)+1,
"%s\n", memos[changed].message); "%s\n", memos[changed].message);