Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/dalvik/system/ZipPathValidator#nestedclasses) \| [Methods](https://developer.android.com/reference/dalvik/system/ZipPathValidator#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/dalvik/system/ZipPathValidator#inhmethods)

# ZipPathValidator

` public final class ZipPathValidator `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | dalvik.system.ZipPathValidator |

<br />

*** ** * ** ***

Enables validation of zip file entry paths to prevent exploitation of the path traversal vulnerability, e.g. zip path entries containing ".." or "/". For more details, read [this](https://developer.android.com/topic/security/risks/zip-path-traversal).

The default implementation accepts all zip file entry paths without raising any exceptions.

For custom validation rules, the core functionality should be implemented in a `https://developer.android.com/reference/dalvik/system/ZipPathValidator.Callback` interface and that instance should be set in `https://developer.android.com/reference/dalvik/system/ZipPathValidator#setCallback(dalvik.system.ZipPathValidator.Callback)`.

Existing validation could be set to a default one by calling `https://developer.android.com/reference/dalvik/system/ZipPathValidator#clearCallback()`.

## Summary

| ### Nested classes ||
|---|---|
| ` interface` | `https://developer.android.com/reference/dalvik/system/ZipPathValidator.Callback` Interface that defines the core validation mechanism when accessing zip file entry paths. |

| ### Public methods ||
|---|---|
| ` static void` | ` https://developer.android.com/reference/dalvik/system/ZipPathValidator#clearCallback()() ` Clears the current validation mechanism by setting the current callback instance to a default validation. |
| ` static void` | ` https://developer.android.com/reference/dalvik/system/ZipPathValidator#setCallback(dalvik.system.ZipPathValidator.Callback)(https://developer.android.com/reference/dalvik/system/ZipPathValidator.Callback callback) ` Sets the current callback implementation for zip paths. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Public methods

### clearCallback

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static void clearCallback ()
```

Clears the current validation mechanism by setting the current callback instance to a default validation.

<br />

### setCallback

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static void setCallback (ZipPathValidator.Callback callback)
```

Sets the current callback implementation for zip paths.

The provided callback should not perform IO or any blocking operations, but only perform path validation. A typical implementation will validate String entries in a single pass and throw a `https://developer.android.com/reference/java/util/zip/ZipException` if the path contains potentially hazardous components such as "..".

<br />

| Parameters ||
|---|---|
| `callback` | `ZipPathValidator.Callback`: An instance of `https://developer.android.com/reference/dalvik/system/ZipPathValidator.Callback`'s implementation. This value cannot be `null`. <br /> |