| 1452 | |
| 1453 | |
| 1454 | ULONG Mapping::mapUser(string& name, string& trustedRole) |
| 1455 | { |
| 1456 | AuthReader::Info info; |
| 1457 | |
| 1458 | if (flags & MAP_ERROR_HANDLER) |
| 1459 | { |
| 1460 | // We are in the error handler - perform minimum processing |
| 1461 | trustedRole = ""; |
| 1462 | name = "<Unknown>"; |
| 1463 | |
| 1464 | if (authBlock) |
| 1465 | { |
| 1466 | for (AuthReader rdr(*authBlock); rdr.getInfo(info); rdr.moveNext()) |
| 1467 | { |
| 1468 | if (info.type == NM_USER && info.name.hasData()) |
| 1469 | { |
| 1470 | name = info.name.ToString(); |
| 1471 | break; |
| 1472 | } |
| 1473 | } |
| 1474 | } |
| 1475 | |
| 1476 | return 0; |
| 1477 | } |
| 1478 | |
| 1479 | // Create new writer |
| 1480 | AuthWriter newBlock; |
| 1481 | |
| 1482 | // Map it only when needed |
| 1483 | if (authBlock && authBlock->hasData() && (dbCache || secCache)) |
| 1484 | { |
| 1485 | ExtInfo info; |
| 1486 | |
| 1487 | // Caches are ready somehow - proceed with analysis |
| 1488 | AuthReader auth(*authBlock); |
| 1489 | |
| 1490 | // Map in simple mode first main, next security db |
| 1491 | if (!(dbCache && dbCache->map4(false, internalFlags & FLAG_DB, auth, info, newBlock))) |
| 1492 | { |
| 1493 | if (!(secCache && secCache->map4(false, internalFlags & FLAG_SEC, auth, info, newBlock))) |
| 1494 | { |
| 1495 | // Map in wildcard mode first main, next security db |
| 1496 | if (!(dbCache && dbCache->map4(true, internalFlags & FLAG_DB, auth, info, newBlock))) |
| 1497 | { |
| 1498 | if (secCache) |
| 1499 | secCache->map4(true, internalFlags & FLAG_SEC, auth, info, newBlock); |
| 1500 | } |
| 1501 | } |
| 1502 | } |
| 1503 | } |
| 1504 | |
| 1505 | for (AuthReader rdr(newBlock); rdr.getInfo(info); rdr.moveNext()) |
| 1506 | { |
| 1507 | if (mainDb && info.secDb == mainDb) |
| 1508 | internalFlags |= FLAG_DB; |
| 1509 | if (info.secDb == secExpanded.c_str()) |
| 1510 | internalFlags |= FLAG_SEC; |
| 1511 | } |
no test coverage detected