make the mime types fixed-sized too

This commit is contained in:
Omar Polo 2022-09-10 09:40:05 +00:00
parent 7277bb7dc2
commit aa9543b9fd
3 changed files with 17 additions and 18 deletions

7
gmid.h
View File

@ -70,6 +70,9 @@
#define DOMAIN_NAME_LEN (253+1)
#define LABEL_LEN (63+1)
#define MEDIATYPE_NAMEMAX 128 /* file name extension */
#define MEDIATYPE_TYPEMAX 128 /* length of type/subtype */
#define FCGI_MAX 32
#define PROC_MAX 16
@ -175,8 +178,8 @@ struct vhost {
};
struct etm { /* extension to mime */
char *mime;
char *ext;
char mime[MEDIATYPE_TYPEMAX];
char ext[MEDIATYPE_NAMEMAX];
};
struct mime {

18
mime.c
View File

@ -35,7 +35,6 @@ init_mime(struct mime *mime)
int
add_mime(struct mime *mime, const char *mt, const char *ext)
{
char *mimetype, *extension;
struct etm *t;
size_t newcap;
@ -49,15 +48,11 @@ add_mime(struct mime *mime, const char *mt, const char *ext)
mime->cap = newcap;
}
if ((mimetype = strdup(mt)) == NULL)
t = &mime->t[mime->len];
if (strlcpy(t->mime, mt, sizeof(t->mime)) >= sizeof(t->mime))
return -1;
if ((extension = strdup(ext)) == NULL) {
free(mimetype);
if (strlcpy(t->ext, ext, sizeof(t->ext)) >= sizeof(t->ext))
return -1;
}
mime->t[mime->len].mime = mimetype;
mime->t[mime->len].ext = extension;
mime->len++;
return 0;
}
@ -157,12 +152,5 @@ mime(struct vhost *host, const char *path)
void
free_mime(struct mime *m)
{
struct etm *t;
for (t = m->t; t->mime != NULL; ++t) {
free(t->mime);
free(t->ext);
}
free(m->t);
}

10
parse.y
View File

@ -225,6 +225,8 @@ option : CHROOT string {
"`types' block.");
if (add_mime(&conf.mime, $2, $3) == -1)
err(1, "add_mime");
free($2);
free($3);
}
| MAP string TOEXT string {
yywarn("`map mime to-ext' is deprecated and will be "
@ -232,6 +234,8 @@ option : CHROOT string {
"`types' block.");
if (add_mime(&conf.mime, $2, $4) == -1)
err(1, "add_mime");
free($2);
free($4);
}
| PORT NUM { conf.port = check_port_num($2); }
| PREFORK NUM { conf.prefork = check_prefork_num($2); }
@ -477,7 +481,10 @@ mediaopts_l : mediaopts_l mediaoptsl nl
| mediaoptsl nl
;
mediaoptsl : STRING { current_media = $1; } medianames_l optsemicolon
mediaoptsl : STRING {
free(current_media);
current_media = $1;
} medianames_l optsemicolon
| include
;
@ -488,6 +495,7 @@ medianames_l : medianames_l medianamesl
medianamesl : numberstring {
if (add_mime(&conf.mime, current_media, $1) == -1)
err(1, "add_mime");
free($1);
}
;