Enlightenment CVS committal

Author  : mej
Project : eterm
Module  : libast

Dir     : eterm/libast/src


Modified Files:
        conf.c mbuff.c obj.c 


Log Message:
Mon Jan 23 14:29:26 2006                        Michael Jennings (mej)

0.7 final release.  Includes fix for CVE-2006-0224 buffer overflow
discovered by Rosiello Security.  Details can be found at
http://www.rosiello.org/en/read_bugs.php?id=25
----------------------------------------------------------------------

===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/conf.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- conf.c      7 Mar 2005 22:29:07 -0000       1.26
+++ conf.c      23 Jan 2006 19:31:54 -0000      1.27
@@ -31,7 +31,7 @@
  * @author Michael Jennings <[EMAIL PROTECTED]>
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: conf.c,v 1.26 
2005/03/07 22:29:07 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: conf.c,v 1.27 
2006/01/23 19:31:54 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -721,14 +721,12 @@
 
 /* The config file reader.  This looks for the config file by searching 
CONFIG_SEARCH_PATH.
    If it can't find a config file, it displays a warning but continues. -- mej 
*/
-
 spif_charptr_t 
 spifconf_find_file(const spif_charptr_t file, const spif_charptr_t dir, const 
spif_charptr_t pathlist)
 {
     static spif_char_t name[PATH_MAX], full_path[PATH_MAX];
     spif_charptr_t path, p;
-    short maxpathlen;
-    unsigned short len;
+    spif_int32_t len, maxpathlen;
     struct stat fst;
 
     REQUIRE_RVAL(file != NULL, NULL);
@@ -737,6 +735,13 @@
     D_CONF(("spifconf_find_file(\"%s\", \"%s\", \"%s\") called from directory 
\"%s\".\n",
             file, NONULL(dir), NONULL(pathlist), name));
 
+    /* Make sure our supplied settings don't overflow. */
+    len = strlen(SPIF_CAST_C(char *) file) + ((dir) ? (strlen(SPIF_CAST_C(char 
*) dir)) : (0)) + 2;
+    if ((len > SPIF_CAST(int32) sizeof(name)) || (len <= 0)) {
+        D_CONF(("Too big.  I lose. :(\n"));
+        return ((spif_charptr_t) NULL);
+    }
+
     if (dir) {
         strcpy(SPIF_CAST_C(char *) name, SPIF_CAST_C(char *) dir);
         strcat(SPIF_CAST_C(char *) name, "/");
@@ -756,7 +761,7 @@
     /* maxpathlen is the longest possible path we can stuff into name[].  The 
- 2 saves room for
        an additional / and the trailing null. */
     if ((maxpathlen = sizeof(name) - len - 2) <= 0) {
-        D_CONF(("Too big.  I lose. :(\n", name));
+        D_CONF(("Too big.  I lose. :(\n"));
         return ((spif_charptr_t) NULL);
     }
 
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/mbuff.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- mbuff.c     15 Dec 2004 00:00:22 -0000      1.1
+++ mbuff.c     23 Jan 2006 19:31:54 -0000      1.2
@@ -21,7 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: mbuff.c,v 1.1 
2004/12/15 00:00:22 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: mbuff.c,v 1.2 
2006/01/23 19:31:54 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -495,7 +495,7 @@
     REQUIRE_RVAL(self->buff != SPIF_NULL_TYPE(byteptr), FALSE);
 
     for (j = 0, i = self->len - 1; i > j; i--, j++) {
-        (void) BINSWAP(tmp[j], tmp[i]);
+        SWAP(tmp[j], tmp[i]);
     }
     return TRUE;
 }
===================================================================
RCS file: /cvsroot/enlightenment/eterm/libast/src/obj.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- obj.c       23 Jul 2004 21:38:39 -0000      1.27
+++ obj.c       23 Jan 2006 19:31:54 -0000      1.28
@@ -28,11 +28,11 @@
  * This file contains the basic object class.
  *
  * @author Michael Jennings <[EMAIL PROTECTED]>
- * $Revision: 1.27 $
- * $Date: 2004/07/23 21:38:39 $
+ * $Revision: 1.28 $
+ * $Date: 2006/01/23 19:31:54 $
  */
 
-static const char __attribute__((unused)) cvs_ident[] = "$Id: obj.c,v 1.27 
2004/07/23 21:38:39 mej Exp $";
+static const char __attribute__((unused)) cvs_ident[] = "$Id: obj.c,v 1.28 
2006/01/23 19:31:54 mej Exp $";
 
 #ifdef HAVE_CONFIG_H
 # include <config.h>
@@ -390,7 +390,7 @@
 spif_obj_set_class(spif_obj_t self, spif_class_t cls)
 {
     ASSERT_RVAL(!SPIF_OBJ_ISNULL(self), FALSE);
-    SPIF_OBJ(self)->cls = cls;
+    self->cls = cls;
     return TRUE;
 }
 




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to