> On Dec. 15, 2015, 4:24 a.m., Alex Naparu wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/internal/windows/dirent.hpp,
> >  line 79
> > <https://reviews.apache.org/r/39019/diff/8/?file=1128789#file1128789line79>
> >
> >     Consider using a smart pointer instead. Same below.

I would love to use a smart pointer, but unfortunately, the goal here is to 
make a drop-in replacement for the POSIX `dirent` API, which is in raw C.


> On Dec. 15, 2015, 4:24 a.m., Alex Naparu wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/internal/windows/dirent.hpp,
> >  line 215
> > <https://reviews.apache.org/r/39019/diff/8/?file=1128789#file1128789line215>
> >
> >     This is copied here, but malloc'd elsewhere. Is that safe?

I'm no C expert by any stretch of the imagination, but I believe this is safe. 
The reason is, we're actually not `malloc`'ing that array at all, we're 
`strcpy`'ing a path into a stack-allocated array of `MAX_PATH` in length. 
According to [1], this includes null terminator, so I think this is ok to do.

[1] 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx


> On Dec. 15, 2015, 4:24 a.m., Alex Naparu wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/internal/windows/dirent.hpp,
> >  line 230
> > <https://reviews.apache.org/r/39019/diff/8/?file=1128789#file1128789line230>
> >
> >     Consider using safe versions of string functions

I'm not an expert in C or Windows, but looking at this, it seems like we can't 
use `strncpy` or `strcpy_s` for the potentially-insecure call to `strcpy` in 
`opendir` (since we don't know the length of `path` ahead of time), and for the 
calls to `strcpy` that we can use these functions, it's not helpful, because 
they are `strcpy`'ing stuff from Windows API calls like `FindNextFile`, which 
should be outputting something sensible anyway.

So, it seems like this is probably not worth changing? What do you think?


> On Dec. 15, 2015, 4:24 a.m., Alex Naparu wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/windows.hpp, line 74
> > <https://reviews.apache.org/r/39019/diff/8/?file=1128790#file1128790line74>
> >
> >     Might want to add this as a reference too: 
> > https://msdn.microsoft.com/en-us/library/930f87yf.aspx
> >     
> >     MAX_PATH is horribly obsolete, we might want to consider checking 
> > whether we're running on NTFS for all FS-related ops. That will be true in 
> > the vast majority of cases these days.

I actually expect that we will probably mostly never run on FAT at all, but I 
wasn't super well versed in how to get the Windows API to not use the FAT 
limitations, so we went with mostly FAT-limited APIs, because they seemed 
simpler. That said, I'm not an expert at either Windows or C++, so maybe this 
was all just naive.


- Alex


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/39019/#review110392
-----------------------------------------------------------


On Nov. 17, 2015, 7:06 p.m., Alex Clemmer wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/39019/
> -----------------------------------------------------------
> 
> (Updated Nov. 17, 2015, 7:06 p.m.)
> 
> 
> Review request for mesos, Artem Harutyunyan, Joris Van Remoortere, and Joseph 
> Wu.
> 
> 
> Bugs: MESOS-3441
>     https://issues.apache.org/jira/browse/MESOS-3441
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Windows: Added dirent compat code for non-Unix systems.
> 
> 
> Diffs
> -----
> 
>   
> 3rdparty/libprocess/3rdparty/stout/include/stout/internal/windows/dirent.hpp 
> PRE-CREATION 
>   3rdparty/libprocess/3rdparty/stout/include/stout/windows.hpp 
> 1a7037d64afeedc340258c92067e95d1d3caa027 
> 
> Diff: https://reviews.apache.org/r/39019/diff/
> 
> 
> Testing
> -------
> 
> `make check` from autotools on Ubuntu 15.
> `make check` from CMake on OS X 10.10.
> Ran `check` project in VS on Windows 10.
> 
> 
> Thanks,
> 
> Alex Clemmer
> 
>

Reply via email to