return(0);
}
-void buildymd(const char *dia, const char *mes, const char *ano, char *wdata)
+void buildymd(const char *dia, const char *mes, const char *ano, char *wdata,int wdata_size)
{
int nmes;
nmes=month2num(mes);
- sprintf(wdata,"%04d%02d%02d",atoi(ano),nmes+1,atoi(dia));
+ snprintf(wdata,wdata_size,"%04d%02d%02d",atoi(ano),nmes+1,atoi(dia));
}
char *buildtime(long long int elap)
{
- int num = elap / 1000;
+ long int num = elap / 1000LL;
int hor = 0;
int min = 0;
int sec = 0;
- static char buf[12];
+ static char buf[20];
- buf[0]='\0';
-
- hor=num / 3600;
- min=(num % 3600) / 60;
- sec=num % 60;
- sprintf(buf,"%02d:%02d:%02d",hor,min,sec);
+ hor=num / 3600L;
+ min=(num % 3600L) / 60L;
+ sec=num % 60L;
+ snprintf(buf,sizeof(buf),"%02d:%02d:%02d",hor,min,sec);
return(buf);
}
FILE *fp_in;
char wdir[MAXLEN];
- sprintf(wdir,"%s%s/sarg-date",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/sarg-date",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer to small to store %s%s/sarg-date"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if ((fp_in = fopen(wdir, "rt")) == 0) {
- sprintf(wdir,"%s%s/date",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/date",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer to small to store %s%s/date"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if ((fp_in = fopen(wdir, "rt")) == 0) {
data[0]='\0';
return(-1);
char tuser[20];
int nuser;
- sprintf(wdir,"%s%s/sarg-users",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/sarg-users",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer too small to store %s%s/sarg-users"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if((fp_in=fopen(wdir,"r"))==NULL) {
- sprintf(wdir,"%s%s/users",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/users",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer too small to store %s%s/users"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if((fp_in=fopen(wdir,"r"))==NULL) {
return(0);
}
*tbytes=0;
*media=0;
- sprintf(wdir,"%s%s/sarg-general",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/sarg-general",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer too small to store %s%s/sarg-general"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if ((fp_in = fopen(wdir, "r")) == 0) {
- sprintf(wdir,"%s%s/general",dirname,name);
+ if (snprintf(wdir,sizeof(wdir),"%s%s/general",dirname,name)>=sizeof(wdir)) {
+ debuga(_("Buffer too small to store %s%s/general"),dirname,name);
+ exit(EXIT_FAILURE);
+ }
if ((fp_in = fopen(wdir, "r")) == 0) {
return;
}
while ((direntp = readdir( dirp )) != NULL ){
if(direntp->d_name[0]=='.')
continue;
- sprintf(srcfile,"%s/%s",imgdir,direntp->d_name);
+ if (snprintf(srcfile,sizeof(srcfile),"%s/%s",imgdir,direntp->d_name)>=sizeof(srcfile)) {
+ debuga(_("Buffer too small to store %s/%s"),imgdir,direntp->d_name);
+ exit(EXIT_FAILURE);
+ }
if (stat(srcfile,&info)) {
debuga(_("Cannot stat \"%s\" - %s\n"),srcfile,strerror(errno));
continue;
}
if (S_ISREG(info.st_mode)) {
- sprintf(dstfile,"%s/%s",images,direntp->d_name);
+ if (snprintf(dstfile,sizeof(dstfile),"%s/%s",images,direntp->d_name)>=sizeof(dstfile)) {
+ debuga(_("Buffer too small to store %s/%s"),images,direntp->d_name);
+ exit(EXIT_FAILURE);
+ }
img_in = fopen(srcfile, "rb");
if(img_in!=NULL) {
img_ou = fopen(dstfile, "wb");
strcpy(dirname2,wdir);
- sprintf(wdir,"%s/sarg-date",outdirname);
+ if (snprintf(wdir,sizeof(wdir),"%s/sarg-date",outdirname)>=sizeof(wdir)) {
+ debuga(_("Buffer too small to store %s/sarg-date"),outdirname);
+ exit(EXIT_FAILURE);
+ }
if ((fp_ou = fopen(wdir, "wt")) == 0) {
debuga(_("cannot open %s for writing: %s\n"),wdir,strerror(errno));
perror("SARG:");
char *fixtime(long long int elap)
{
- int num = elap / 1000;
+ long int num = elap / 1000LL;
int hor = 0;
int min = 0;
int sec = 0;
- static char buf[12];
+ static char buf[20];
- hor=num / 3600;
- min=(num % 3600) / 60;
- sec=num % 60;
+ hor=num / 3600L;
+ min=(num % 3600L) / 60L;
+ sec=num % 60L;
if(hor==0 && min==0 && sec==0)
strcpy(buf,"0");
else
- sprintf(buf,"%d:%02d:%02d",hor,min,sec);
+ snprintf(buf,sizeof(buf),"%d:%02d:%02d",hor,min,sec);
return buf;
}
-void date_from(char *date, int *dfrom, int *duntil)
+void date_from(char *date,int date_size, int *dfrom, int *duntil)
{
int d0=0;
int m0=0;
*dfrom=y0*10000+m0*100+d0;
*duntil=y1*10000+m1*100+d1;
- sprintf(date,"%02d/%02d/%04d-%02d/%02d/%04d",d0,m0,y0,d1,m1,y1);
+ snprintf(date,date_size,"%02d/%02d/%04d-%02d/%02d/%04d",d0,m0,y0,d1,m1,y1);
return;
}