projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mhbuild implement header folding
[mmh]
/
sbr
/
addrsbr.c
diff --git
a/sbr/addrsbr.c
b/sbr/addrsbr.c
index
201e816
..
db5b42e
100644
(file)
--- a/
sbr/addrsbr.c
+++ b/
sbr/addrsbr.c
@@
-104,7
+104,7
@@
getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult)
dftype = LOCALHOST;
}
dftype = LOCALHOST;
}
- mp = (struct mailname *) mh_xcalloc((size_t) 1, sizeof(*mp));
+ mp = mh_xcalloc(1, sizeof(*mp));
if (mp == NULL) {
if (eresult)
strcpy(eresult, "insufficient memory to represent address");
if (mp == NULL) {
if (eresult)
strcpy(eresult, "insufficient memory to represent address");
@@
-114,31
+114,31
@@
getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult)
}
mp->m_next = NULL;
}
mp->m_next = NULL;
- mp->m_text = getcpy(str);
+ mp->m_text = mh_xstrdup(str);
if (pers)
if (pers)
- mp->m_pers = getcpy(pers);
+ mp->m_pers = mh_xstrdup(pers);
if (mbox == NULL) {
mp->m_type = BADHOST;
mp->m_nohost = 1;
mp->m_ingrp = ingrp;
if (mbox == NULL) {
mp->m_type = BADHOST;
mp->m_nohost = 1;
mp->m_ingrp = ingrp;
- mp->m_gname = getcpy(grp);
+ mp->m_gname = mh_xstrdup(grp);
if (note)
if (note)
- mp->m_note = getcpy(note);
+ mp->m_note = mh_xstrdup(note);
return mp;
}
if (host) {
return mp;
}
if (host) {
- mp->m_mbox = getcpy(mbox);
- mp->m_host = getcpy(host);
+ mp->m_mbox = mh_xstrdup(mbox);
+ mp->m_host = mh_xstrdup(host);
} else {
mp->m_nohost = 1;
} else {
mp->m_nohost = 1;
- mp->m_mbox = getcpy(mbox);
+ mp->m_mbox = mh_xstrdup(mbox);
if (route == NULL && dftype == LOCALHOST) {
mp->m_host = NULL;
mp->m_type = dftype;
} else {
if (route == NULL && dftype == LOCALHOST) {
mp->m_host = NULL;
mp->m_type = dftype;
} else {
- mp->m_host = route ? NULL : getcpy(dfhost);
+ mp->m_host = route ? NULL : mh_xstrdup(dfhost);
mp->m_type = route ? NETHOST : dftype;
}
goto got_host;
mp->m_type = route ? NETHOST : dftype;
}
goto got_host;
@@
-152,12
+152,12
@@
getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult)
got_host: ;
if (route)
got_host: ;
if (route)
- mp->m_path = getcpy(route);
+ mp->m_path = mh_xstrdup(route);
mp->m_ingrp = ingrp;
if (grp)
mp->m_ingrp = ingrp;
if (grp)
- mp->m_gname = getcpy(grp);
+ mp->m_gname = mh_xstrdup(grp);
if (note)
if (note)
- mp->m_note = getcpy(note);
+ mp->m_note = mh_xstrdup(note);
return mp;
}
return mp;
}
@@
-170,21
+170,21
@@
mnfree(struct mailname *mp)
return;
if (mp->m_text)
return;
if (mp->m_text)
- free(mp->m_text);
+ mh_free0(&(mp->m_text));
if (mp->m_pers)
if (mp->m_pers)
- free(mp->m_pers);
+ mh_free0(&(mp->m_pers));
if (mp->m_mbox)
if (mp->m_mbox)
- free(mp->m_mbox);
+ mh_free0(&(mp->m_mbox));
if (mp->m_host)
if (mp->m_host)
- free(mp->m_host);
+ mh_free0(&(mp->m_host));
if (mp->m_path)
if (mp->m_path)
- free(mp->m_path);
+ mh_free0(&(mp->m_path));
if (mp->m_gname)
if (mp->m_gname)
- free(mp->m_gname);
+ mh_free0(&(mp->m_gname));
if (mp->m_note)
if (mp->m_note)
- free(mp->m_note);
+ mh_free0(&(mp->m_note));
- free((char *) mp);
+ mh_free0(&mp);
}
}
@@
-410,17
+410,21
@@
local_test: ;
* number of parsed addresses. element is set to
* the last parsed addresse.
*/
* number of parsed addresses. element is set to
* the last parsed addresse.
*/
-size_t
+ssize_t
getmboxes(char *line, struct mailname **element)
{
getmboxes(char *line, struct mailname **element)
{
- struct mailname *mp, *next;
+ struct mailname *mp, *next, *first;
char *cp;
size_t i = 0;
char *cp;
size_t i = 0;
- next = (*element)->m_next;
+ first = *element;
+ next = first->m_next;
while ((cp = getname(line))) {
mp = getm(cp, NULL, 0, AD_HOST, NULL);
while ((cp = getname(line))) {
mp = getm(cp, NULL, 0, AD_HOST, NULL);
+ if (mp == NULL) {
+ goto error;
+ }
(*element)->m_next = mp;
*element = mp;
i++;
(*element)->m_next = mp;
*element = mp;
i++;
@@
-428,4
+432,12
@@
getmboxes(char *line, struct mailname **element)
(*element)->m_next = next;
return i;
(*element)->m_next = next;
return i;
+error:
+ while (first->m_next != NULL && first->m_next != next) {
+ mp = first->m_next;
+ first->m_next = mp->m_next;
+ mh_free0(&mp);
+ }
+ first->m_next = next;
+ return -1;
}
}