/usr/include/ace/checked_iterator.h is in libace-dev 6.0.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | // -*- C++ -*-
#ifndef ACE_CHECKED_ITERATOR_H
#define ACE_CHECKED_ITERATOR_H
/**
* @file checked_iterator.h
*
* @brief Checked iterator factory function.
*
* Some compilers (e.g. MSVC++ >= 8) issue security related
* diagnostics if algorithms such as std::copy() are used in an unsafe
* way. Normally this isn't an issue if STL container iterators are
* used in conjuction with the standard algorithms. However, in cases
* where application-specific iterators are use with standard
* algorithms that could potentially overrun a buffer, extra care must
* be taken to prevent such an overrun. If supported, checked
* iterators can be used to address the potential destination buffer
* overrun.
*
* This header provides function templates that generate the
* appropriate checked iterator. In cases where checked iterators are
* not supported, the pointer passed to the function is returned
* instead.
*
* $Id: checked_iterator.h 88263 2009-12-20 07:58:09Z johnnyw $
*
* @internal The functions and types in this header are meant for
* internal use. They may change at any point between
* releases.
*
* @author Ossama Othman
*/
# if defined (_MSC_VER) && (_MSC_FULL_VER >= 140050000) && (!defined (_STLPORT_VERSION))
// Checked iterators are currently only supported in MSVC++ 8 or better.
# include <iterator>
# endif /* _MSC_VER >= 1400 && !_STLPORT_VERSION */
# if defined (_MSC_VER) && (_MSC_FULL_VER >= 140050000) && (!defined (_STLPORT_VERSION))
template <typename PTR>
stdext::checked_array_iterator<PTR>
ACE_make_checked_array_iterator (PTR buf, size_t len)
{
return stdext::checked_array_iterator<PTR> (buf, len);
}
# else
template <typename PTR>
PTR
ACE_make_checked_array_iterator (PTR buf, size_t /* len */)
{
// Checked iterators are unsupported. Just return the pointer to
// the buffer itself.
return buf;
}
# endif /* _MSC_VER >= 1400 && !_STLPORT_VERSION */
#endif /* ACE_CHECKED_ITERATOR_H */
|