Russell Hancox
6b0994a990
santad: Avoid properties in critical path
2016-07-13 12:44:48 -04:00
Russell Hancox
7dd616e891
santa-driver: Switch SantaCache from an array to a linked list
2016-07-12 14:54:43 -04:00
Russell Hancox
c672edbe4d
Whitespace clean-up
2016-07-12 14:51:10 -04:00
Russell Hancox
687ecc7097
santad: Close more file descriptors on exec
2016-07-11 16:23:38 -04:00
Russell Hancox
b8882b4826
santactl/fileinfo: Wait longer for daemon response.
2016-07-11 15:59:30 -04:00
Russell Hancox
51de0b38a4
santad: Change watchdog thread interval to 30s
2016-07-11 15:59:30 -04:00
Russell Hancox
e0309c0482
SantaGUI: In keyPathsForValuesAffectingValueForKey, return an empty set rather than nil
2016-07-11 15:53:04 -04:00
Russell Hancox
5dbe86869d
santad: Move event storage out of the high priority decision queue
...
As event storage needs to happen before attempting upload, use the same serial queue.
2016-07-01 17:56:52 -04:00
George Kola
4c03411405
Avoid two string copies
2016-07-01 14:07:23 -07:00
Russell Hancox
629bd4aff9
santad: argsForPid: Don't replace last NULL but still count up to it
2016-07-01 12:48:50 -04:00
Russell Hancox
f098ca0d02
santad: Update argsForPid to append to a given string.
2016-06-30 09:41:26 -04:00
George Kola
7a3a98c27a
Correctly use pread
...
pread can return less than the chunk size (e.g. signal caught in the
middle) and hence we need to handle it. This change also cleans up the
hash function and makes it more performant.
2016-06-29 11:21:56 -07:00
George Kola
d388e99c0e
Cache method call
...
Minor optimization. Cache objc method call in local variable to avoid a
second call
2016-06-28 21:26:35 -07:00
Russell Hancox
2baea9a6b4
Project: Xcode recommended updates.
2016-06-28 17:34:58 -04:00
Russell Hancox
0629625a9a
santad: Move log queue down to BACKGROUND priority.
2016-06-28 17:21:07 -04:00
Russell Hancox
a2d0acc761
santad: sanitizeString: Use cached length value, use lengthOfBytesUsingEncoding: instead of length.
2016-06-28 17:02:37 -04:00
Russell Hancox
28a6bce90f
santad: sanitizeString: Only allocate buffer if necessary.
2016-06-28 16:35:50 -04:00
Russell Hancox
9058192ffe
santad: Use memcpy instead of strncpy where appropriate
2016-06-28 16:23:06 -04:00
Russell Hancox
465b358271
SantaCache: Initialize count_ to 0.
2016-06-28 15:01:57 -04:00
Russell Hancox
7de585fe1d
santad: Replace sanitizeString with simple loop.
...
This is ~70% faster on average and is faster in all cases compared to the regex and the previous method.
2016-06-28 14:54:31 -04:00
Russell Hancox
8479730c95
SNTFileInfo: Catch potential NULL-pointer deref in isScript and isXARArchive.
2016-06-28 14:54:21 -04:00
Russell Hancox
7102e2df4c
SNTFileInfo: More speed-ups in hashing, use RDAHEAD, don't use NOCACHE, catch EINTR.
2016-06-28 14:52:28 -04:00
Russell Hancox
c3bd99ff93
santad: Use serial queues instead of NSLock
2016-06-28 14:51:27 -04:00
Russell Hancox
c560405a46
SNTFileInfo: Speed up hashing - increase chunksize, read directly, use fcntl
...
- Use fcntl to disable cache and issue an advisory read
- Increase default chunk size from 4KB to 256KB
- Use pread to read from file descriptor, rather than make NSData objects
This is ~15% faster.
2016-06-27 17:38:41 -04:00
Russell Hancox
0c0fb28ccc
santad: Make argsForPid more reliable and 33% faster
2016-06-27 15:55:18 -04:00
Russell Hancox
a33fce942c
santad: Use regex to sanitize incoming strings, which is ~6x faster.
2016-06-27 13:11:15 -04:00
Russell Hancox
369cd40ee5
santad: Also optimize file logging by using NSMutableString
2016-06-27 12:51:29 -04:00
Russell Hancox
577b431a41
santad: Put locks around NSMutableDictionary in SNTEventLog and SNTExecutionController.
2016-06-27 12:48:36 -04:00
Russell Hancox
d70983962b
Merge pull request #50 from georgekola/gk-optimize-log1
...
Optimize logging by using one pre-allocated NSMutableString
2016-06-27 10:05:46 -04:00
George Kola
c631155be7
Using fwrite as we know the length of string
...
It is better to use fwrite as it is generally faster and we are not
using any fprintf feature
2016-06-25 18:50:03 -07:00
George Kola
6038930755
Optimize logging by using one pre-allocated NSMutableString
2016-06-25 18:47:05 -07:00
Russell Hancox
269a94bf03
SantaCache: Updates from PR:
...
+ Added check that per_bucket is >=1 and reduced max from 126 to 64.
+ Added note about cache reset above set method
+ Moved modulo into the hash function
2016-06-20 13:14:50 -04:00
Russell Hancox
7f3e4d7468
santa-driver: Re-implement caching to avoid OSDictionary.
...
OSDictionary is not well-suited to our needs and locking is quite expensive.
This commit:
+ Replaces all uses of OSDictionary with a new SantaCache class, which
is a size-limited array hash table with per-bucket locking. It works with
uint64_t keys, which is perfect for our needs.
+ Adds a unit test for SantaCache.
+ Removes SantaCachedDecision and SantaPIDAndPPID, which only existed
because OSDictionary can only store OSObject subclasses.
+ Removes a lot of locking logic from SantaDecisionManager as the
locking is now handled inside SantaCache and is therefore and is
much more granular.
+ Removes the timed cache expiration for ALLOW decisions. This was
originally to ensure executions were logged regularly but as we're
logging all executions nowadays this is longer particularly useful.
SantaCache's configured load factor and hashing function may need tweaking
over-time but this is already a little faster and uses less memory
than what existed before.
2016-06-17 16:39:39 -04:00
Russell Hancox
eb89891cdd
Merge pull request #48 from tburgin/tom
...
Add checkcache command to santactl
2016-06-17 16:17:38 -04:00
Tom Burgin
038b068370
u_int64_t --> uint64_t. CacheCheck --> RemoveFromCache.
2016-06-17 15:53:54 -04:00
Tom Burgin
d2017a59de
Get back file status from the kernel cache
2016-06-17 12:45:51 -04:00
Tom Burgin
3435b56a84
Add checkcache command to santactl. It will check to see if the vnode id of a file is in the kernel cache
2016-06-17 12:03:26 -04:00
Russell Hancox
a812558d2d
santad: Remove hashes from file write logs
2016-06-16 17:31:40 -04:00
Russell Hancox
aefd85455e
Project: s/OS X/macOS/g
2016-06-16 17:31:40 -04:00
Russell Hancox
e42f1347b7
santad: Use IORegistryEntryFromPath instead of IORegistryEntryCopyFromPath.
...
The latter was only introduced in 10.11. Fixes #47
2016-06-16 17:31:40 -04:00
Russell Hancox
c7442a03d1
santa-driver: Use KAUTH_VNODE_WRITE_DATA instead of KAUTH_FILEOP_CLOSE to catch writes
...
It turns out that the KAUTH_FILEOP_CLOSE action is not used when the kernel automatically closes file descriptors for exiting processes. Some things, like dd, don't close their file descriptors and let the kernel do it for them which we were previously missing.
2016-06-16 17:31:40 -04:00
Russell Hancox
c4d0628bdb
santad: Increase detail in TTY messages.
2016-06-13 12:38:55 -04:00
Russell Hancox
d51ae66242
santactl: Only resume in CommandContoller when its required, otherwise leave it to individual command
2016-06-10 12:48:54 -04:00
Russell Hancox
7baa1a345e
SNTFileWatcher: Don't call handler on main thread, sleep between handler invocations
2016-06-07 11:40:12 -04:00
Russell Hancox
acf7f4fd52
SantaGUI: Don't reload config file if attributes change (as it will trigger an attribute change)
2016-06-07 11:38:48 -04:00
Russell Hancox
f43e8680b8
santad: Improve SNTFileWatcher, update config file permissions if they change
2016-06-06 16:15:28 -04:00
Russell Hancox
545a6c1b36
santad: Ensure config file reloading is handled on main thread
2016-06-06 11:31:36 -04:00
Russell Hancox
3640e2c5f0
santad: Add a workaround for PrinterProxy
2016-06-03 11:32:55 -04:00
Russell Hancox
b3659cb456
santad: Don't spawn an event upload if one for this hash happened in the last 10 minutes
2016-06-01 17:20:16 -04:00
Russell Hancox
76284a2916
santad: Log disk mount/unmount events
2016-06-01 17:20:16 -04:00