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