def checkRemote(pid,flags,type): Systap.setSyscallNum(pid, Systap.ST_SYS_GETPID) error = None if type == Systap.ST_SYS_OPEN: if flags & Systap.ST_O_WRONLY or flags & Systap.ST_O_RDWR or flags & Systap.ST_O_TRUNC or flags & Systap.ST_O_APPEND or flags & Systap.ST_O_CREAT or flags & Systap.ST_O_EXCL: error = Systap.ST_EROFS return error
def checkLocal(pid,path,flags,type): Systap.setSyscallNum(pid, Systap.ST_SYS_GETPID) error = flag = None if type == Systap.ST_SYS_OPEN: if flags & Systap.ST_O_RDWR: error = Systap.ST_EACCES elif flags & Systap.ST_O_EXCL and os.path.exists(path): error = Systap.ST_EEXIST elif not flags & Systap.ST_O_CREAT and not os.path.exists(path): error = Systap.ST_ENOENT if error == None: if flags & Systap.ST_O_APPEND: if flags & Systap.ST_O_TRUNC: flag = "w" else: flag = "a" elif flags & Systap.ST_O_WRONLY and (flags & Systap.ST_O_TRUNC or flags & Systap.ST_O_CREAT): flag = "w" elif flags & Systap.ST_O_WRONLY: flag = "w" else: flag = "r" return (error,flag)