Edit File: secureio.cpython-37.opt-1.pyc
B �e�C � @ sZ d dl mZ d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlm Z d dl mZ d dlZd dl mZmZmZmZmZmZmZmZmZmZ e�d�Zye�d �ZW n ek r� e�d �ZY nX eZeZG dd� de�Zee�Zej Z eeege _!ee _"ej#Z#eege#_!ee#_"ej$Z$ege$_!ee$_"ej%Z%ege%_!ee%_"ej&Z&ege&_!de&_"ej'Z'ege'_!ee'_"ej(Z)eege)_!ee)_"egej*_!dej*_"ej+Z+ege+_!ee+_"ej,Z,eeege,_!ee,_"eeeegej-_!eej-_"eeeeegej._!eej._"eeeeeegej/_!eej/_"eeeeegej0_!eej0_"ej1Z1eege1_!ee1_"ej2Z2eege2_!ee2_"d a3dZ4dZ5dZ6dd� Z(dd� Z7dd� Z8dd� Z*dDdd�Z-dEdd�Z.dFdd�Z/dGdd �Z0dHd!d"�Z9dId$d%�Z:dJd'd(�Z;dKd)d*�Z<dLd+d,�Z=d-d.� Z>d/d0� Z?da@d1d2� ZAe e5d3�ZBd4d5� ZCdaDdMd6d7�ZEd8d9� ZFdNd:d;�ZGd<d=� ZHd>d?� ZIejJd@dA� �ZKejJdBdC� �ZLdS )O� )�print_function)�absolute_import)�divisionN)�ClPwd)�drop_user_privileges) �cdll�c_long� Structure�c_ushort�c_ubyte�c_char�POINTER�c_int�c_void_p�c_char_pz libc.so.6zlibsecureio.so.0zliblve.so.0c @ s2 e Zd Zdefdefdefdefded fgZdS )�DIRENTRYZd_inoZd_offZd_reclenZd_type�d_name� N) �__name__� __module__�__qualname__�ino_t�off_tr r r Z_fields_� r r ��/builddir/build/BUILDROOT/alt-python27-cllib-3.3.5-1.el8.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/secureio.pyr # s r Tz/var/log/cagefs-update.logi� Fc C s t �| t jt jB �S )N)�os�open�O_RDONLY� O_NOFOLLOW)�pathr r r �open_not_symlink� s r c C s t �t| �d�S )N�r)r �fdopenr )r r r r �open_file_not_symlink� s r# c C sd t �| �}t|�}|std��t|� g }x$t|�}|s:P |j}|�|j� q,W t|� t |� |S )z:Returns list of entries of directory pointed by descriptorzfdopendir error) r �dup� fdopendir� Exception� rewinddir�readdir�contents�appendr �closedir)�fdZfd2ZdirpZdirlistZentryp�entryr r r �flistdir� s r. c C s0 | d k r,yt �| � W n tk r* Y nX d S )N)r �close�OSError)r, r r r �closefd� s r1 c C sL |dkrd}t �| �� |||�� �}|dkr0|S |dk rH|d| dd� dS )z{Sets permissions to directory (in secure manner) Returns descriptor if successful Returns None if error has occuredN���r z.Error: failed to set permissions of directory FT)�liblve�set_perm_dir_secure�encode)r �perm�parent_pathr, �loggerr r r r4 � s r4 c C sN |dkrd}t �| �� ||||�� �}|dkr2|S |dk rJ|d| dd� dS )zSets owner and group of directory (in secure manner) Returns descriptor if successful Returns None if error has occuredNr2 r z(Error: failed to set owner of directory FT)r3 �set_owner_dir_securer5 )r �uid�gidr7 r, r8 r r r r9 � s r9 c C sP |dkrd}t �| �� |||||�� �}|dkr4|S |dk rL|d| dd� dS )z�Creates directory if it does not exist, sets permissions/owner otherwise Returns descriptor if successful Returns None if error has occuredNr2 r z#Error : failed to create directory FT)r3 �create_dir_securer5 )r r6 r: r; r7 r, r8 r r r r<