commit - 7277bb7dc2971fad2a51b7975df85dda1df4c936
commit + aa9543b9fd1963d86f63fda13addb356f9039c37
blob - 0997699cdcd83851c6c7db9f59fa88aecdc06302
blob + 3d2540328660d03c37085e73e52452cd378f9786
--- gmid.h
+++ gmid.h
#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
};
struct etm { /* extension to mime */
- char *mime;
- char *ext;
+ char mime[MEDIATYPE_TYPEMAX];
+ char ext[MEDIATYPE_NAMEMAX];
};
struct mime {
blob - e70b3fe8258c9cdeb09291f70412ada84d87dd89
blob + ad338f0dfabf4f046f9d7b62e998cf6200680282
--- mime.c
+++ mime.c
int
add_mime(struct mime *mime, const char *mt, const char *ext)
{
- char *mimetype, *extension;
struct etm *t;
size_t newcap;
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;
}
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);
}
blob - 9eac0c47a113711a95bce5468556637917a44385
blob + 6a664f93c5375543aa7f3cf6a5573a3b9312ed1d
--- parse.y
+++ parse.y
"`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 "
"`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); }
| mediaoptsl nl
;
-mediaoptsl : STRING { current_media = $1; } medianames_l optsemicolon
+mediaoptsl : STRING {
+ free(current_media);
+ current_media = $1;
+ } medianames_l optsemicolon
| include
;
medianamesl : numberstring {
if (add_mime(&conf.mime, current_media, $1) == -1)
err(1, "add_mime");
+ free($1);
}
;