diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-08-12 22:00:05 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2025-08-12 22:00:05 (GMT) |
| commit | 71e90a29ad5a9b3c8f8e02c378010befcfcfaa3d (patch) | |
| tree | 46c7862ba5ae8a6aab6704cb3b879f9532862e5c | |
| parent | 4ba51a6b66b5aada2c017339d3860a37083ecc45 (diff) | |
| parent | 20a3d4112f5177781500f6f87841be0d1d7cb049 (diff) | |
| download | tcl-71e90a29ad5a9b3c8f8e02c378010befcfcfaa3d.zip tcl-71e90a29ad5a9b3c8f8e02c378010befcfcfaa3d.tar.gz tcl-71e90a29ad5a9b3c8f8e02c378010befcfcfaa3d.tar.bz2 | |
Merge 8.6
| -rw-r--r-- | macosx/tclMacOSXFCmd.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/macosx/tclMacOSXFCmd.c b/macosx/tclMacOSXFCmd.c index 251abf3..d8c6b1c 100644 --- a/macosx/tclMacOSXFCmd.c +++ b/macosx/tclMacOSXFCmd.c @@ -94,6 +94,8 @@ typedef struct finderinfo { } __attribute__ ((__packed__)) finderinfo; typedef struct { + u_int64_t reserved1; /* Make sure data is 8-byte aligned */ + u_int32_t reserved2; /* See [992f94d847] */ u_int32_t info_length; u_int32_t data[8]; } fileinfobuf; @@ -160,7 +162,8 @@ TclMacOSXGetFileAttribute( alist.commonattr = ATTR_CMN_FNDRINFO; } native = (const char *)Tcl_FSGetNativePath(fileName); - result = getattrlist(native, &alist, &finfo, sizeof(fileinfobuf), 0); + result = getattrlist(native, &alist, &finfo.info_length, + sizeof(fileinfobuf) - offsetof(fileinfobuf, info_length), 0); if (result != 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( @@ -256,7 +259,8 @@ TclMacOSXSetFileAttribute( alist.commonattr = ATTR_CMN_FNDRINFO; } native = (const char *)Tcl_FSGetNativePath(fileName); - result = getattrlist(native, &alist, &finfo, sizeof(fileinfobuf), 0); + result = getattrlist(native, &alist, &finfo.info_length, + sizeof(fileinfobuf) - offsetof(fileinfobuf, info_length), 0); if (result != 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( @@ -413,7 +417,8 @@ TclMacOSXCopyFileAttributes( alist.bitmapcount = ATTR_BIT_MAP_COUNT; alist.commonattr = ATTR_CMN_FNDRINFO; - if (getattrlist(src, &alist, &finfo, sizeof(fileinfobuf), 0)) { + if (getattrlist(src, &alist, &finfo.info_length, + sizeof(fileinfobuf) - offsetof(fileinfobuf, info_length), 0)) { return TCL_ERROR; } if (setattrlist(dst, &alist, &finfo.data, sizeof(finfo.data), 0)) { @@ -435,7 +440,8 @@ TclMacOSXCopyFileAttributes( alist.commonattr = 0; alist.fileattr = ATTR_FILE_RSRCLENGTH; - if (getattrlist(src, &alist, &finfo, sizeof(fileinfobuf), 0)) { + if (getattrlist(src, &alist, &finfo.info_length, + sizeof(fileinfobuf) - offsetof(fileinfobuf, info_length), 0)) { return TCL_ERROR; } else if (*rsrcForkSize == 0) { return TCL_OK; @@ -504,7 +510,8 @@ TclMacOSXMatchType( bzero(&alist, sizeof(struct attrlist)); alist.bitmapcount = ATTR_BIT_MAP_COUNT; alist.commonattr = ATTR_CMN_FNDRINFO; - if (getattrlist(pathName, &alist, &finfo, sizeof(fileinfobuf), 0) != 0) { + if (getattrlist(pathName, &alist, &finfo.info_length, + sizeof(fileinfobuf) - offsetof(fileinfobuf, info_length), 0)) { return 0; } if ((types->perm & TCL_GLOB_PERM_HIDDEN) && |
