Date: Sat, 31 Aug 2002 01:39:23 -0700 From: Kris Kennaway <kris@obsecurity.org> To: Kris Kennaway <kris@obsecurity.org> Cc: Jordan K Hubbard <jkh@queasyweasel.com>, Mikhail Teterin <mi+mx@aldan.algebra.com>, arch@FreeBSD.org, jkh@FreeBSD.org Subject: Re: pkg-routines ignore the recorded md5 checksums Message-ID: <20020831083923.GA90468@xor.obsecurity.org> In-Reply-To: <20020831073845.GA74568@xor.obsecurity.org> References: <20020831070918.GA72640@xor.obsecurity.org> <049EDAFB-BCB3-11D6-A85D-0003938C7B7E@queasyweasel.com> <20020831073845.GA74568@xor.obsecurity.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Aug 31, 2002 at 12:38:45AM -0700, Kris Kennaway wrote: > Perhaps we should change plist.c to make unrecognised commands > non-fatal, so we can have more flexibility about extending the > commandset in future. Just for fun, I made the following patch which adds commands @md5, @origin, @deporigin (while still recognizing the older @comment forms). I'd like to commit it after a transition period of a 4.x release or so with my previous patch that makes unknown commands non-fatal. Kris Index: create/pl.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr2/ncvs/src/usr.sbin/pkg_install/create/pl.c,v retrieving revision 1.13.2.7 diff -u -r1.13.2.7 pl.c --- create/pl.c 20 Aug 2002 06:35:07 -0000 1.13.2.7 +++ create/pl.c 31 Aug 2002 07:54:57 -0000 @@ -67,8 +67,8 @@ if (cp !=3D NULL) { PackingList tmp =3D new_plist_entry(); =20 - tmp->name =3D copy_string(strconcat("MD5:", cp)); - tmp->type =3D PLIST_COMMENT; + tmp->name =3D copy_string(cp); + tmp->type =3D PLIST_MD5; tmp->next =3D p->next; tmp->prev =3D p; p->next =3D tmp; Index: info/show.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr2/ncvs/src/usr.sbin/pkg_install/info/show.c,v retrieving revision 1.32 diff -u -r1.32 show.c --- info/show.c 11 May 2002 04:17:55 -0000 1.32 +++ info/show.c 31 Aug 2002 08:33:26 -0000 @@ -154,7 +154,7 @@ break; =20 case PLIST_DEPORIGIN: - printf(Quiet ? "@comment DEPORIGIN:%s\n" : + printf(Quiet ? "@deporigin %s\n" : "\tdependency origin: %s\n", p->name); break; =20 @@ -173,8 +173,12 @@ break; =20 case PLIST_ORIGIN: - printf(Quiet ? "@comment ORIGIN:%s\n" : + printf(Quiet ? "@origin %s\n" : "\tPackage origin: %s\n", p->name);=20 + break; + + case PLIST_MD5: + printf(Quiet ? "@md5 %s\n" : "\tMD5 sum: %s\n", p->name); break; =20 default: Index: lib/lib.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr2/ncvs/src/usr.sbin/pkg_install/lib/lib.h,v retrieving revision 1.29.2.10 diff -u -r1.29.2.10 lib.h --- lib/lib.h 2 Aug 2002 11:09:05 -0000 1.29.2.10 +++ lib/lib.h 31 Aug 2002 08:29:06 -0000 @@ -91,7 +91,7 @@ PLIST_CHOWN, PLIST_CHGRP, PLIST_COMMENT, PLIST_IGNORE, PLIST_NAME, PLIST_UNEXEC, PLIST_SRC, PLIST_DISPLAY, PLIST_PKGDEP, PLIST_MTREE, PLIST_DIR_RM, PLIST_IGNORE_INST, - PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN + PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN, PLIST_MD5 }; typedef enum _plist_t plist_t; =20 Index: lib/plist.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /usr2/ncvs/src/usr.sbin/pkg_install/lib/plist.c,v retrieving revision 1.29.2.9 diff -u -r1.29.2.9 plist.c --- lib/plist.c 20 Aug 2002 06:35:08 -0000 1.29.2.9 +++ lib/plist.c 31 Aug 2002 08:29:20 -0000 @@ -222,6 +222,10 @@ return PLIST_CHOWN; else if (!strcmp(cmd, "group")) return PLIST_CHGRP; + else if (!strcmp(cmd, "origin")) + return PLIST_ORIGIN; + else if (!strcmp(cmd, "deporigin")) + return PLIST_DEPORIGIN; else if (!strcmp(cmd, "comment")) { if (!strncmp(*arg, "ORIGIN:", 7)) { *arg +=3D 7; @@ -247,6 +251,8 @@ return PLIST_DIR_RM; else if (!strcmp(cmd, "option")) return PLIST_OPTION; + else if (!strcmp(cmd, "md5")) + return PLIST_MD5; else return FAIL; } @@ -276,7 +282,7 @@ cmd =3D plist_cmd(pline + 1, &cp); if (cmd =3D=3D FAIL) { cleanup(0); - errx(2, "%s: bad command '%s'", __func__, pline); + warnx("%s: unknown command '%s' (package tools out of date?)", __func= __, pline); } if (*cp =3D=3D '\0') { cp =3D NULL; @@ -376,11 +382,15 @@ break; =20 case PLIST_ORIGIN: - fprintf(fp, "%ccomment ORIGIN:%s\n", CMD_CHAR, plist->name); + fprintf(fp, "%corigin %s\n", CMD_CHAR, plist->name); break; =20 case PLIST_DEPORIGIN: - fprintf(fp, "%ccomment DEPORIGIN:%s\n", CMD_CHAR, plist->name); + fprintf(fp, "%cdeporigin %s\n", CMD_CHAR, plist->name); + break; + + case PLIST_MD5: + fprintf(fp, "%cmd5 %s\n", CMD_CHAR, plist->name); break; =20 default: @@ -443,8 +453,15 @@ "this packing list is incorrect - ignoring delete request", tmp); } else { - if (p->next && p->next->type =3D=3D PLIST_COMMENT && !strncmp(p->next->n= ame, "MD5:", 4)) { - char *cp =3D NULL, buf[33]; + if (p->next && (( p->next->type =3D=3D PLIST_COMMENT && + !strncmp(p->next->name, "MD5:", 4)) || + p->next->type =3D=3D PLIST_MD5 )) { + char *cp =3D NULL, buf[33], offset; + + if ( p->next->type =3D=3D PLIST_MD5) + offset =3D 0; + else + offset =3D 4; =20 /* * For packing lists whose version is 1.1 or greater, the md5 @@ -462,7 +479,7 @@ =20 if (cp !=3D NULL) { /* Mismatch? */ - if (strcmp(cp, p->next->name + 4)) { + if (strcmp(cp, p->next->name + offset)) { warnx("`%s' fails original MD5 checksum - %s", tmp, Force ? "deleted anyway." : "not deleted."); if (!Force) { --EeQfGwPcQSOJBaQU Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (FreeBSD) iD8DBQE9cIC6Wry0BWjoQKURApIWAKDxR16z2IHY9MFZQS1VBpYzwRAgsACeNE9J vJA10kcNP8kK8lDynbyy0U8= =2K+k -----END PGP SIGNATURE----- --EeQfGwPcQSOJBaQU-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020831083923.GA90468>