10fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski/*
20fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project
30fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski *
40fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License");
50fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * you may not use this file except in compliance with the License.
60fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * You may obtain a copy of the License at
70fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski *
80fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski *      http://www.apache.org/licenses/LICENSE-2.0
90fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski *
100fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Unless required by applicable law or agreed to in writing, software
110fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS,
120fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * See the License for the specific language governing permissions and
140fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * limitations under the License.
150fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */
160fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski
170fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipackage com.android.server.wifi;
180fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski
190fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskiimport android.os.Binder;
200fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski
210fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski/**
220fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Utilities for faking the calling uid in Binder.
230fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */
240fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipublic class BinderUtil {
250fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    /**
260fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * Fake the calling uid in Binder.
270fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     * @param uid the calling uid that Binder should return from now on
280fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski     */
290fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    public static void setUid(int uid) {
300fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski        Binder.restoreCallingIdentity((((long) uid) << 32) | Binder.getCallingPid());
310fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski    }
320fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski}
33