=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.36 retrieving revision 1.37 diff -c -r1.36 -r1.37 *** src/usr.bin/cvs/rcs.c 2005/03/13 22:50:34 1.36 --- src/usr.bin/cvs/rcs.c 2005/03/26 08:09:54 1.37 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.36 2005/03/13 22:50:34 jfb Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.37 2005/03/26 08:09:54 tedu Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 1127,1133 **** const char* rcs_errstr(int code) { ! if ((code < 0) || (code > (int)RCS_NERR)) return (NULL); return (rcs_errstrs[code]); } --- 1127,1133 ---- const char* rcs_errstr(int code) { ! if ((code < 0) || (code >= (int)RCS_NERR)) return (NULL); return (rcs_errstrs[code]); } *************** *** 1486,1497 **** --- 1486,1499 ---- cvs_log(LP_ERR, "missing semi-colon after RCS `%s' key", rk->rk_str); + free(tokstr); rcs_freedelta(rdp); return (-1); } if (tok == RCS_TOK_DATE) { if ((datenum = rcsnum_parse(tokstr)) == NULL) { + free(tokstr); rcs_freedelta(rdp); return (-1); } *************** *** 1501,1507 **** --- 1503,1512 ---- "fields", (datenum->rn_len > 6) ? "too many" : "missing"); + free(tokstr); rcs_freedelta(rdp); + rcsnum_free(datenum); + return (-1); } rdp->rd_date.tm_year = datenum->rn_id[0]; if (rdp->rd_date.tm_year >= 1900) *************** *** 1691,1696 **** --- 1696,1702 ---- symp->rs_num = rcsnum_alloc(); if (symp->rs_num == NULL) { cvs_log(LP_ERRNO, "failed to allocate rcsnum info"); + free(symp->rs_name); free(symp); return (-1); } *************** *** 1768,1773 **** --- 1774,1780 ---- if (type != RCS_TOK_COLON) { cvs_log(LP_ERR, "unexpected token `%s' in symbol list", RCS_TOKSTR(rfp)); + rcsnum_free(lkp->rl_num); free(lkp); return (-1); } *************** *** 1776,1781 **** --- 1783,1789 ---- if (type != RCS_TOK_NUM) { cvs_log(LP_ERR, "unexpected token `%s' in symbol list", RCS_TOKSTR(rfp)); + rcsnum_free(lkp->rl_num); free(lkp); return (-1); } *************** *** 1783,1788 **** --- 1791,1797 ---- if (rcsnum_aton(RCS_TOKSTR(rfp), NULL, lkp->rl_num) < 0) { cvs_log(LP_ERR, "failed to parse RCS NUM `%s'", RCS_TOKSTR(rfp)); + rcsnum_free(lkp->rl_num); free(lkp); return (-1); }