* ntea (EA_BUFSIZ): Reduce to 64K. Add comment to explain why.

This commit is contained in:
Corinna Vinschen 2014-04-04 13:39:58 +00:00
parent 6db8a48220
commit d35f4fae56
2 changed files with 18 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2014-04-04 Corinna Vinschen <corinna@vinschen.de>
* ntea (EA_BUFSIZ): Reduce to 64K. Add comment to explain why.
2014-03-29 Christopher Faylor <me.cygwin2014@cgf.cx> 2014-03-29 Christopher Faylor <me.cygwin2014@cgf.cx>
* DevNotes: Add entry cgf-000025. * DevNotes: Add entry cgf-000025.

View File

@ -1,7 +1,7 @@
/* ntea.cc: code for manipulating Extended Attributes /* ntea.cc: code for manipulating Extended Attributes
Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009,
2010, 2011 Red Hat, Inc. 2010, 2011, 2014 Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -23,9 +23,19 @@ details. */
#define MAX_EA_NAME_LEN 256 #define MAX_EA_NAME_LEN 256
#define MAX_EA_VALUE_LEN 65536 #define MAX_EA_VALUE_LEN 65536
/* At least one maximum sized entry fits. */ /* At least one maximum sized entry fits.
#define EA_BUFSIZ (sizeof (FILE_FULL_EA_INFORMATION) + MAX_EA_NAME_LEN \ CV 2014-04-04: I'm really puzzled how it should be possible to have 64K EAs,
+ MAX_EA_VALUE_LEN) if the NtQueryEaFile function chokes on buffers bigger than
64K with STATUS_INVALID_PARAMETER, at least on Windows 7 and
later. In theory, the buffer size should be
(sizeof (FILE_FULL_EA_INFORMATION) + MAX_EA_NAME_LEN
+ MAX_EA_VALUE_LEN
to read a single 64K EA. But maybe I just misunderstood and
EAs can't be 64K. I can't find the source I got this
information from anymore. */
#define EA_BUFSIZ MAX_EA_VALUE_LEN
#define NEXT_FEA(p) ((PFILE_FULL_EA_INFORMATION) (p->NextEntryOffset \ #define NEXT_FEA(p) ((PFILE_FULL_EA_INFORMATION) (p->NextEntryOffset \
? (char *) p + p->NextEntryOffset : NULL)) ? (char *) p + p->NextEntryOffset : NULL))