Пример #1
0
void CheckForGuardRegion(uintptr_t addr, size_t expected_size) {
#if NACL_WINDOWS
    CheckGuardMapping(addr, expected_size, MEM_RESERVE, 0, MEM_PRIVATE);
#elif NACL_LINUX
    CheckMapping(addr, expected_size, PROT_NONE, MAP_PRIVATE);
#elif NACL_OSX
    CheckMapping(addr, expected_size, VM_PROT_NONE, SM_EMPTY);
#else
# error "Unrecognized OS"
#endif
}
Пример #2
0
int FilesystemRemap::AddMapping(std::string source, std::string dest) {
	if (!is_relative_to_cwd(source) && !is_relative_to_cwd(dest)) {
		std::list<pair_strings>::const_iterator it;
		for (it = m_mappings.begin(); it != m_mappings.end(); it++) {
			if ((it->second.length() == dest.length()) && (it->second.compare(dest) == 0)) {
				dprintf(D_ALWAYS, "Mapping already present for %s.\n", dest.c_str());
				return -1;
			}
		}
		if (CheckMapping(dest)) {
			dprintf(D_ALWAYS, "Failed to convert shared mount to private mapping");
			return -1;
		}
		m_mappings.push_back( std::pair<std::string, std::string>(source, dest) );
	} else {
		dprintf(D_ALWAYS, "Unable to add mappings for relative directories (%s, %s).\n", source.c_str(), dest.c_str());
		return -1;
	}
	return 0;
}