OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 10-Sep-2005 16:58:24
Branch: OPENPKG_2_3_SOLID Handle: 2005091015582000
Added files: (Branch: OPENPKG_2_3_SOLID)
openpkg-src/squid squid.patch
Modified files: (Branch: OPENPKG_2_3_SOLID)
openpkg-src/squid squid.spec
Log:
apply security fixes (CAN-2005-2794)
Summary:
Revision Changes Path
1.2.8.1 +200 -0 openpkg-src/squid/squid.patch
1.76.2.3 +3 -1 openpkg-src/squid/squid.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/squid/squid.patch
============================================================================
$ cvs diff -u -r0 -r1.2.8.1 squid.patch
--- /dev/null 2005-09-10 16:58:19 +0200
+++ squid.patch 2005-09-10 16:58:21 +0200
@@ -0,0 +1,200 @@
+Security Fix
+http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-2794
+http://www.squid-cache.org/Versions/v2/2.5/bugs/#squid-2.5.STABLE10-STORE_PENDING
+
+Index: src/cache_manager.c
+--- src/cache_manager.c.orig 2001-02-23 21:59:50 +0100
++++ src/cache_manager.c 2005-09-10 15:26:48 +0200
+@@ -250,8 +250,7 @@
+ /* retrieve object requested */
+ a = cachemgrFindAction(mgr->action);
+ assert(a != NULL);
+- if (a->flags.atomic)
+- storeBuffer(entry);
++ storeBuffer(entry);
+ {
+ http_version_t version;
+ HttpReply *rep = entry->mem_obj->reply;
+@@ -269,10 +268,9 @@
+ httpReplySwapOut(rep, entry);
+ }
+ a->handler(entry);
+- if (a->flags.atomic) {
+- storeBufferFlush(entry);
++ storeBufferFlush(entry);
++ if (a->flags.atomic)
+ storeComplete(entry);
+- }
+ cachemgrStateFree(mgr);
+ }
+
+Index: src/ftp.c
+--- src/ftp.c.orig 2005-03-26 03:50:53 +0100
++++ src/ftp.c 2005-09-10 15:27:48 +0200
+@@ -366,7 +366,6 @@
+ char *dirup;
+ int i, j, k;
+ char *title;
+- storeBuffer(e);
+ storeAppendPrintf(e, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01
Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
+ storeAppendPrintf(e, "<!-- HTML listing generated by Squid %s -->\n",
+ version_string);
+@@ -420,7 +419,6 @@
+ storeAppendPrintf(e, "<PRE>\n");
+ dirup = ftpHtmlifyListEntry("<internal-dirup>", ftpState);
+ storeAppend(e, dirup, strlen(dirup));
+- storeBufferFlush(e);
+ ftpState->flags.html_header_sent = 1;
+ }
+
+@@ -428,7 +426,6 @@
+ ftpListingFinish(FtpStateData * ftpState)
+ {
+ StoreEntry *e = ftpState->entry;
+- storeBuffer(e);
+ storeAppendPrintf(e, "</PRE>\n");
+ if (ftpState->flags.listformat_unknown && !ftpState->flags.tried_nlst) {
+ storeAppendPrintf(e, "<A HREF=\"./;type=d\">[As plain
directory]</A>\n");
+@@ -443,7 +440,6 @@
+ getMyHostname(),
+ full_appname_string);
+ storeAppendPrintf(e, "</ADDRESS></BODY></HTML>\n");
+- storeBufferFlush(e);
+ }
+
+ static const char *Month[] =
+@@ -851,7 +847,7 @@
+ debug(9, 3) ("ftpParseListing: %d bytes to play with\n", (int) len);
+ line = memAllocate(MEM_4K_BUF);
+ end++;
+- storeBuffer(e);
++ storeBuffer(e); /* released when done processing current data
payload */
+ s = sbuf;
+ s += strspn(s, crlf);
+ for (; s < end; s += strcspn(s, crlf), s += strspn(s, crlf)) {
+@@ -869,7 +865,6 @@
+ assert(t != NULL);
+ storeAppend(e, t, strlen(t));
+ }
+- storeBufferFlush(e);
+ assert(usable <= len);
+ if (usable < len) {
+ /* must copy partial line to beginning of buf */
+@@ -974,6 +969,7 @@
+ storeAppend(entry, ftpState->data.buf, len);
+ ftpState->data.offset = 0;
+ }
++ storeBufferFlush(entry);
+ commSetSelect(fd,
+ COMM_SELECT_READ,
+ ftpDataRead,
+@@ -2530,7 +2526,6 @@
+ else
+ err->ftp.reply = xstrdup("");
+ errorAppendEntry(ftpState->entry, err);
+- storeBufferFlush(ftpState->entry);
+ ftpSendQuit(ftpState);
+ }
+
+@@ -2551,6 +2546,7 @@
+ ftpState->flags.http_header_sent = 1;
+ assert(e->mem_obj->inmem_hi == 0);
+ EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT);
++ storeBuffer(e); /* released when done processing current data
payload */
+ filename = (t = strRChr(urlpath, '/')) ? t + 1 : strBuf(urlpath);
+ if (ftpState->flags.isdir) {
+ mime_type = "text/html";
+@@ -2569,7 +2565,6 @@
+ break;
+ }
+ }
+- storeBuffer(e);
+ httpReplyReset(reply);
+ /* set standard stuff */
+ if (ftpState->restarted_offset) {
+@@ -2591,7 +2586,6 @@
+ if (mime_enc)
+ httpHeaderPutStr(&reply->header, HDR_CONTENT_ENCODING, mime_enc);
+ httpReplySwapOut(reply, e);
+- storeBufferFlush(e);
+ reply->hdr_sz = e->mem_obj->inmem_hi;
+ storeTimestampsSet(e);
+ if (ftpState->flags.authenticated) {
+Index: src/gopher.c
+--- src/gopher.c.orig 2005-01-12 07:04:01 +0100
++++ src/gopher.c 2005-09-10 15:26:48 +0200
+@@ -732,29 +732,28 @@
+ * OK. We successfully reach remote site. Start MIME typing
+ * stuff. Do it anyway even though request is not HTML type.
+ */
++ storeBuffer(entry);
+ gopherMimeCreate(gopherState);
+ switch (gopherState->type_id) {
+ case GOPHER_DIRECTORY:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_DIR;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_INDEX:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_INDEX_RESULT;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_CSO:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_CSO_RESULT;
+ gopherState->cso_recno = 0;
+ gopherState->HTML_header_added = 0;
+ break;
+ default:
+ gopherState->conversion = NORMAL;
++ storeBufferFlush(entry);
+ }
+ /* Schedule read reply. */
+ commSetSelect(fd, COMM_SELECT_READ, gopherReadReply, gopherState, 0);
+Index: src/store.c
+--- src/store.c.orig 2005-03-26 03:50:53 +0100
++++ src/store.c 2005-09-10 15:26:48 +0200
+@@ -1232,9 +1232,11 @@
+ void
+ storeBufferFlush(StoreEntry * e)
+ {
+- EBIT_CLR(e->flags, DELAY_SENDING);
+- InvokeHandlers(e);
+- storeSwapOut(e);
++ if (EBIT_TEST(e->flags, DELAY_SENDING)) {
++ EBIT_CLR(e->flags, DELAY_SENDING);
++ InvokeHandlers(e);
++ storeSwapOut(e);
++ }
+ }
+
+ squid_off_t
+Index: src/whois.c
+--- src/whois.c.orig 2001-04-14 02:03:24 +0200
++++ src/whois.c 2005-09-10 15:26:48 +0200
+@@ -97,12 +97,19 @@
+ debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, len);
+ debug(75, 5) ("{%s}\n", buf);
+ if (len > 0) {
+- if (0 == mem->inmem_hi)
+- mem->reply->sline.status = HTTP_OK;
++ if (0 == mem->inmem_hi) {
++ http_reply *reply = mem->reply;
++ http_version_t version;
++ storeBuffer(entry);
++ httpBuildVersion(&version, 1, 0);
++ httpReplySetHeaders(reply, version, HTTP_OK, "Gatewaying",
"text/plain", -1, -1, -2);
++ httpReplySwapOut(reply, entry);
++ }
+ fd_bytes(fd, len, FD_READ);
+ kb_incr(&statCounter.server.all.kbytes_in, len);
+ kb_incr(&statCounter.server.http.kbytes_in, len);
+ storeAppend(entry, buf, len);
++ storeBufferFlush(entry);
+ commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p,
Config.Timeout.read);
+ } else if (len < 0) {
+ debug(50, 2) ("whoisReadReply: FD %d: read failure: %s.\n",
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/squid/squid.spec
============================================================================
$ cvs diff -u -r1.76.2.2 -r1.76.2.3 squid.spec
--- openpkg-src/squid/squid.spec 24 Feb 2005 09:27:51 -0000 1.76.2.2
+++ openpkg-src/squid/squid.spec 10 Sep 2005 14:58:20 -0000 1.76.2.3
@@ -39,7 +39,7 @@
Group: Web
License: GPL
Version: %{V_maj}.%{V_min}.%{V_rev}
-Release: 2.3.0
+Release: 2.3.1
# package options
%option with_fsl yes
@@ -51,6 +51,7 @@
Source0:
http://www.squid-cache.org/Versions/v%{V_maj}/%{V_maj}.%{V_min}/squid-%{V_maj}.%{V_min}.STABLE%{V_rev}.tar.gz
Source1: rc.squid
Source2: fsl.squid
+Patch0: squid.patch
# build information
Prefix: %{l_prefix}
@@ -86,6 +87,7 @@
%prep
%setup -q -n squid-%{V_maj}.%{V_min}.STABLE%{V_rev}
+ %patch -p0
%if "%{with_ntlm}" == "yes"
%{l_shtool} subst \
-e 's;/usr/bin/perl;%{l_prefix}/bin/perl;' \
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]