diff --git a/ChangeLog b/ChangeLog index 470f209d4..426fb3a9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-05-26 Richard Frith-Macdonald + + * Source/GSMime.m: When extraneous data is encountered in the input, + ignore it (and log a warning) rather than adding it to the message + body. Not sure this is right ... perhaps should raise an exception + or extend the api toi return the extra data. Anyway, it's better + than the previous behavior of adding the bad data to the parsed body. + * configure.ac: Set some variables for presnece of stdint.h + * Headers/Foundation/NSCoder.h: Remove defines of types in stdint.h + * Headers/Additions/GNUstepBase/GSConfig.h.in: either include stdint.h + or define alternatives for types used in new MacOS-X coding methods. + 2004-05-25 Richard Frith-Macdonald * Source/NSIndexSet.m: ([addIndexesInRange:]) fix bug finding insertion diff --git a/Headers/Additions/GNUstepBase/GSConfig.h.in b/Headers/Additions/GNUstepBase/GSConfig.h.in index 3a0f98889..973ea4245 100644 --- a/Headers/Additions/GNUstepBase/GSConfig.h.in +++ b/Headers/Additions/GNUstepBase/GSConfig.h.in @@ -169,5 +169,13 @@ typedef @GS_ADDR@ gsaddr; */ #define NXConstantString @NX_CONST_STRING_CLASS@ +/* + * Ensure some standard types are defined. + */ +@INCLUDE_STDINT@ +@DEFINE_UINT8_T@ +@DEFINE_INT32_T@ +@DEFINE_INT64_T@ + #endif /* included_GSConfig_h */ diff --git a/Headers/Foundation/NSCoder.h b/Headers/Foundation/NSCoder.h index 00342cec4..6b67abd42 100644 --- a/Headers/Foundation/NSCoder.h +++ b/Headers/Foundation/NSCoder.h @@ -79,18 +79,9 @@ #ifndef STRICT_OPENSTEP /* - * MacOS-X adds some typedefs that GNUstep already has by another name. + * Include GSConfig.h for typedefs/defines of uint8_t, int32_t int64_t */ #include -#ifndef uint8_t -#define uint8_t gsu8 -#endif -#ifndef int32_t -#define int32_t gss32 -#endif -#ifndef int64_t -#define int64_t gss64 -#endif /** diff --git a/Source/Additions/GSMime.m b/Source/Additions/GSMime.m index e3fa57e72..cf663d22c 100644 --- a/Source/Additions/GSMime.m +++ b/Source/Additions/GSMime.m @@ -2166,8 +2166,20 @@ NSDebugMLLog(@"GSMime", @"Header parsed - %@", info); } else { + unsigned dLength = [d length]; + + if (expect > 0 && rawBodyLength > expect) + { + NSData *excess; + + dLength -= (rawBodyLength - expect); + rawBodyLength = expect; + excess = [d subdataWithRange: + NSMakeRange([d length] - dLength, dLength)]; + NSLog(@"Excess data ignored: %@", excess); + } [self decodeData: d - fromRange: NSMakeRange(0, [d length]) + fromRange: NSMakeRange(0, dLength) intoData: data withContext: context]; diff --git a/configure b/configure index 110579b76..2f7835b5f 100755 --- a/configure +++ b/configure @@ -310,7 +310,7 @@ ac_includes_default="\ #endif" ac_subdirs_all="$ac_subdirs_all Source/mframe SSL" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP WHOAMI EGREP GS_WORDS_BIGENDIAN GS_SINT8 GS_UINT8 ac_cv_sizeof_short ac_cv_sizeof_int ac_cv_sizeof_long ac_cv_sizeof_long_long ac_cv_sizeof_float ac_cv_sizeof_double ac_cv_sizeof_voidp GS_ADDR GS_SINT16 GS_UINT16 GS_SINT32 GS_UINT32 GS_SINT64 GS_UINT64 GS_HAVE_I64 GS_SINT128 GS_UINT128 GS_HAVE_I128 GS_FLT32 GS_FLT64 _GSC_S_SHT _GSC_S_INT _GSC_S_LNG _GSC_S_LNG_LNG DYNAMIC_LINKER NX_CONST_STRING_OBJCFLAGS NX_CONST_STRING_CLASS HAVE_PTHREAD_H HAVE_PTS_STREAM_MODULES USE_ZLIB GS_PASS_ARGUMENTS GS_FAKE_MAIN WITH_FFI XML2_CONFIG XML_CONFIG XML_CFLAGS XML_LIBS HAVE_LIBXSLT HAVE_LIBXML USE_GMP INCLUDE_FLAGS subdirs VERSION MAJOR_VERSION MINOR_VERSION SUBMINOR_VERSION GCC_VERSION LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP WHOAMI EGREP GS_WORDS_BIGENDIAN GS_SINT8 GS_UINT8 ac_cv_sizeof_short ac_cv_sizeof_int ac_cv_sizeof_long ac_cv_sizeof_long_long ac_cv_sizeof_float ac_cv_sizeof_double ac_cv_sizeof_voidp GS_ADDR GS_SINT16 GS_UINT16 GS_SINT32 GS_UINT32 GS_SINT64 GS_UINT64 GS_HAVE_I64 GS_SINT128 GS_UINT128 GS_HAVE_I128 GS_FLT32 GS_FLT64 _GSC_S_SHT _GSC_S_INT _GSC_S_LNG _GSC_S_LNG_LNG DYNAMIC_LINKER NX_CONST_STRING_OBJCFLAGS NX_CONST_STRING_CLASS HAVE_PTHREAD_H HAVE_PTS_STREAM_MODULES INCLUDE_STDINT DEFINE_UINT8_T DEFINE_INT32_T DEFINE_INT64_T USE_ZLIB GS_PASS_ARGUMENTS GS_FAKE_MAIN WITH_FFI XML2_CONFIG XML_CONFIG XML_CFLAGS XML_LIBS HAVE_LIBXSLT HAVE_LIBXML USE_GMP INCLUDE_FLAGS subdirs VERSION MAJOR_VERSION MINOR_VERSION SUBMINOR_VERSION GCC_VERSION LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -11694,6 +11694,22 @@ fi done +if test $ac_cv_header_stdint_h = yes; then +INCLUDE_STDINT="#include " +DEFINE_UINT8_T="" +DEFINE_INT32_T="" +DEFINE_INT64_T="" +else +INCLUDE_STDINT="" +DEFINE_UINT8_T="#define uint8_t gsu8" +DEFINE_INT32_T="#define int32_t gss32" +DEFINE_INT64_T="#define int64_t gss64" +fi + + + + + #-------------------------------------------------------------------- # These used by GSFileHandle.m and distributed objects #-------------------------------------------------------------------- @@ -15677,6 +15693,10 @@ s,@NX_CONST_STRING_OBJCFLAGS@,$NX_CONST_STRING_OBJCFLAGS,;t t s,@NX_CONST_STRING_CLASS@,$NX_CONST_STRING_CLASS,;t t s,@HAVE_PTHREAD_H@,$HAVE_PTHREAD_H,;t t s,@HAVE_PTS_STREAM_MODULES@,$HAVE_PTS_STREAM_MODULES,;t t +s,@INCLUDE_STDINT@,$INCLUDE_STDINT,;t t +s,@DEFINE_UINT8_T@,$DEFINE_UINT8_T,;t t +s,@DEFINE_INT32_T@,$DEFINE_INT32_T,;t t +s,@DEFINE_INT64_T@,$DEFINE_INT64_T,;t t s,@USE_ZLIB@,$USE_ZLIB,;t t s,@GS_PASS_ARGUMENTS@,$GS_PASS_ARGUMENTS,;t t s,@GS_FAKE_MAIN@,$GS_FAKE_MAIN,;t t diff --git a/configure.ac b/configure.ac index e0a9e3ada..9f59b9c47 100644 --- a/configure.ac +++ b/configure.ac @@ -645,6 +645,22 @@ AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h signal.h dnl sys/signal.h sys/wait.h sys/file.h sys/fcntl.h dnl sys/ioctl.h sys/stropts.h unistd.h utime.h stdint.h sys/inttypes.h) +if test $ac_cv_header_stdint_h = yes; then +INCLUDE_STDINT="#include " +DEFINE_UINT8_T="" +DEFINE_INT32_T="" +DEFINE_INT64_T="" +else +INCLUDE_STDINT="" +DEFINE_UINT8_T="#define uint8_t gsu8" +DEFINE_INT32_T="#define int32_t gss32" +DEFINE_INT64_T="#define int64_t gss64" +fi +AC_SUBST(INCLUDE_STDINT) +AC_SUBST(DEFINE_UINT8_T) +AC_SUBST(DEFINE_INT32_T) +AC_SUBST(DEFINE_INT64_T) + #-------------------------------------------------------------------- # These used by GSFileHandle.m and distributed objects #--------------------------------------------------------------------