nextcloud / android

📱 Nextcloud Android app
https://play.google.com/store/apps/details?id=com.nextcloud.client
GNU General Public License v2.0
4.3k stars 1.77k forks source link

Parameter specified as non-null is null #8370

Closed Mr-KayJayDee closed 3 years ago

Mr-KayJayDee commented 3 years ago

**** CAUSE OF ERROR ****

java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter password
    at okhttp3.Credentials.basic(Unknown Source:8)
    at okhttp3.Credentials.basic$default(Credentials.kt:28)
    at okhttp3.Credentials.basic(Unknown Source:2)
    at com.owncloud.android.lib.common.OwnCloudClientFactory.createNextcloudClient(OwnCloudClientFactory.java:217)
    at com.owncloud.android.operations.RefreshFolderOperation.updatePredefinedStatus(RefreshFolderOperation.java:338)
    at com.owncloud.android.operations.RefreshFolderOperation.updateCapabilities(RefreshFolderOperation.java:311)
    at com.owncloud.android.operations.RefreshFolderOperation.updateOCVersion(RefreshFolderOperation.java:277)
    at com.owncloud.android.operations.RefreshFolderOperation.run(RefreshFolderOperation.java:230)
    at com.owncloud.android.lib.common.operations.RemoteOperation.run(RemoteOperation.java:359)
    at java.lang.Thread.run(Thread.java:923)

**** APP INFORMATION **** ID: com.nextcloud.client Version: 30160090 Build flavor: gplay

**** DEVICE INFORMATION **** Brand: OnePlus Device: OnePlus6 Model: ONEPLUS A6003 Id: RQ2A.210305.006 Product: OnePlus6

**** FIRMWARE **** SDK: 30 Release: 11 Incremental: 1615660065

tobiasKaminsky commented 3 years ago

Can you tell us when this happens?

Mr-KayJayDee commented 3 years ago

It happened after I logged in, the app tried to load my files from my server.

Posedge commented 3 years ago

I'm having the same, also on OnePlus (OnePlus 8 Pro in my case). This is the crash report:

**** CAUSE OF ERROR ****

java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter password at okhttp3.Credentials.basic(Unknown Source:8) at okhttp3.Credentials.basic$default(Credentials.kt:28) at okhttp3.Credentials.basic(Unknown Source:2) at com.owncloud.android.lib.common.OwnCloudClientFactory.createNextcloudClient(OwnCloudClientFactory.java:217) at com.owncloud.android.operations.RefreshFolderOperation.updatePredefinedStatus(RefreshFolderOperation.java:338) at com.owncloud.android.operations.RefreshFolderOperation.updateCapabilities(RefreshFolderOperation.java:311) at com.owncloud.android.operations.RefreshFolderOperation.updateOCVersion(RefreshFolderOperation.java:277) at com.owncloud.android.operations.RefreshFolderOperation.run(RefreshFolderOperation.java:230) at com.owncloud.android.lib.common.operations.RemoteOperation.run(RemoteOperation.java:359) at java.lang.Thread.run(Thread.java:923)

**** APP INFORMATION **** ID: com.nextcloud.client Version: 30160090 Build flavor: gplay

**** DEVICE INFORMATION **** Brand: OnePlus Device: OnePlus8Pro Model: IN2023 Id: RP1A.201005.001 Product: OnePlus8Pro_EEA

**** FIRMWARE **** SDK: 30 Release: 11 Incremental: 2103221755

Let me know if I can post anything else to help debug this.

tobiasKaminsky commented 3 years ago

Further info: The crash only happens when I have the "nextcloud05.webo.cloud" account selected. If I quickly change the account (when the app is loading) to my "us.cloudamo.com" account, the error does not occur. When I then visited nextcloud05.webo.cloud manually, this message showed: "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." Thus, my guess is that my free account at webo.cloud was either disabled, or hit some other limitation, causing either the sign-in to be rejected, or the sign-in process to error out part-way. (I can't confirm if my account is still active atm because manual sign-in also keeps being rejected, with the message: "Too many requests. There were too many requests from your network. Retry later or contact your administrator if this is an error.") That said, it would be good of the Nextcloud system can gracefully handle rejected/errored sign in attempts (and present a useful message), rather than the current error popup.

Timoses commented 3 years ago

I received the crash report as well ([#8437]). The crash report kept appearing every time I opened the app. I was unable to access Nextcloud via App.

I uninstalled the app and installed it again.

I also see "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds." now when I want to login through the app.

When I try to login via the reinstalled app, I get until "Grant access". After I press it, the circle right to "Grant access" button appears indicating it is working. However, it never finishes. When I touch the screen wildly, touching "Grant access" button repeatedly it jumps back to the Login screen.

When I login via Browser (firefox) on the mobile I also get the "We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.". Logging in is successful there.

Timoses commented 3 years ago

I also seem to be getting a "Access Forbidden\nInvalid request" from time to time in the app after trying to log in (before grant access).

tobiasKaminsky commented 3 years ago

What login name do you use? Is it a email?

tobiasKaminsky commented 3 years ago

Can you create us a test account, test if the problem occurs also there and if so send the credentials to tobias at nextcloud dot com with a reference to this issue?

tobiasKaminsky commented 3 years ago

So I thought it would be connected to brute force. Therefore I enabled it, had 30s timeout and connected a new installed app. It works without any problems.

What kind of user backend do you have? I am really clueless here…

tobiasKaminsky commented 3 years ago

There is an APK file in PR https://github.com/nextcloud/android/pull/8494#issuecomment-850209116, which you can install in parallel to your existing Nextcloud app.

Can someone install it, see if it crashes and also post logcat?

tobiasKaminsky commented 3 years ago

Can you provide us additional infos via logcat? https://github.com/nextcloud/android/blob/master/README.md#getting-debug-info-via-logcat

Timoses commented 3 years ago

What login name do you use? Is it a email?

It is simply the username which I use to login.

So I thought it would be connected to brute force. Therefore I enabled it, had 30s timeout and connected a new installed app. It works without any problems.

What kind of user backend do you have? I am really clueless here…

I do not have brute force app enabled.

It's a Raspberry Pi running Nextcloud in a Docker container.

I just tried it again and it worked. Very odd. The server experienced a reboot some time ago. Perhaps that solved it??..

mightymop commented 3 years ago

May be fixable with this PR: https://github.com/nextcloud/android-library/pull/638

bignose-debian commented 3 years ago

I have today encountered substantially the same crash as reported originally:

************ CAUSE OF ERROR ************

java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter password
    at okhttp3.Credentials.basic(Unknown Source:8)
    at okhttp3.Credentials.basic$default(Credentials.kt:28)
    at okhttp3.Credentials.basic(Unknown Source:2)
    at com.owncloud.android.lib.common.OwnCloudClientFactory.createNextcloudClient(OwnCloudClientFactory.java:217)
    at com.owncloud.android.operations.RefreshFolderOperation.updatePredefinedStatus(RefreshFolderOperation.java:338)
    at com.owncloud.android.operations.RefreshFolderOperation.updateCapabilities(RefreshFolderOperation.java:311)
    at com.owncloud.android.operations.RefreshFolderOperation.updateOCVersion(RefreshFolderOperation.java:277)
    at com.owncloud.android.operations.RefreshFolderOperation.run(RefreshFolderOperation.java:230)
    at com.owncloud.android.lib.common.operations.RemoteOperation.run(RemoteOperation.java:359)
    at java.lang.Thread.run(Thread.java:764)

************ APP INFORMATION ************
ID: com.nextcloud.client
Version: 30160190
Build flavor: generic

************ DEVICE INFORMATION ************
Brand: google
Device: bullhead
Model: Nexus 5X
Id: OPM2.171026.006.H1
Product: bullhead

************ FIRMWARE ************
SDK: 27
Release: 8.1.0
Incremental: a477551705

This version (“3.16.1”) is the latest stable Nextcloud release in F-Droid (at 2021-06-05), and is the current “Suggested” version.

If it matters: currently the server is presenting a self-signed SSL certificate; this is necessary while testing all the connectivity, and the app should allow self-signed certificates to be accepted.

(This seems to be the same behaviour as #7996, and AFAICT my comment there applies here too.)

EleasarTech commented 3 years ago

Don't know how helpful this is, but in my case it was the app 'circles' that produced this error 🤷‍♂️

EleasarTech commented 3 years ago

Okay, I've dug through my logs and found this: grafik This only happens with AD/LDAP Accounts and I think it is caused by the use of the username instead of the GUID, though I could be wrong.

Timoses commented 3 years ago

This only happens with AD/LDAP Accounts

fyi: Mine was a local user on nextcloud ; ).

noresistence commented 3 years ago

The problem occurs even if the phone is in flight mode.

noresistence commented 3 years ago

If I quickly change the account (when the app is loading) to my "us.cloudamo.com" account, the error does not occur.

For me, quickly changing the account was not possible; the error occurs too fast.

Using the system preferences to remove the account that is active when the problem occurs worked for me - after that, i was able to open and use the Nextcloud App with the other account. I will have to add the removed account again now.

bigdman commented 3 years ago

so is there a fix or work around for this issue, i can say the issue is a none issue on the iphone app.

robbieh commented 3 years ago

This also happens for me with version 30160190. I believe this started after upgrading my server to 20.0.11

When I touch "Grant Access >" this shows up in the server log:

Info     no app in context  Deprecated event type for app_password_created: Symfony\Component\EventDispatcher\GenericEvent is used 

adb logcat says:

07-22 21:49:24.586 10799 10799 D OperationsService: Starting command with id 3
07-22 21:49:24.591 10799 19570 D OwnCloudClient #0: REQUEST GET /nextcloud/status.php
07-22 21:49:24.595 10799 19570 D AdvancedSslSocketFactory: Creating SSL Socket with remote www.myhostname.com:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@ac943f5
07-22 21:49:24.595 10799 19570 D AdvancedSslSocketFactory:  ... with connection timeout 50000 and socket timeout 60000
07-22 21:49:24.604 10799 19570 I ServerNameIndicator: SNI done, hostname: www.myhostname.com
07-22 21:49:24.716 10799 19570 W HttpMethodBase: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
07-22 21:49:24.720 10799 19570 I GetStatusRemoteOperation: Connection check at https://www.myhostname.com/nextcloud: Operation finished with HTTP status code -1 (success)
07-22 21:49:24.720 10799 19570 D GetServerInfoOperation: Trying empty authorization to detect authentication method
07-22 21:49:24.722 10799 19570 D OwnCloudClient #0: REQUEST HEAD /nextcloud/remote.php/webdav/
07-22 21:49:24.868 10799 19570 I AuthChallengeProcessor: basic authentication scheme selected
07-22 21:49:24.870 10799 19570 I HttpMethodDirector: No credentials available for BASIC 'Nextcloud'@www.myhostname.com:443
07-22 21:49:24.872 10799 19570 D ExistenceCheckRemoteOperation: Existence check for https://www.myhostname.com/nextcloud/remote.php/webdav/ targeting for  existence finished with HTTP status 401(FAIL)
07-22 21:49:24.872 10799 19570 D DetectAuthenticationMethodOperation: Authentication method found: BASIC_HTTP_AUTH
07-22 21:49:24.873 10799 19570 D OperationsService: Called 1 listeners
07-22 21:49:24.873 10799 19570 D OperationsService: Stopping after command with id 3
07-22 21:49:24.885 10799 20281 D OwnCloudClient #10: Creating OwnCloudClient
07-22 21:49:24.909 10799 20281 D OwnCloudClient #10: REQUEST HEAD /nextcloud/remote.php/webdav/
07-22 21:49:25.009 10799 20281 I AuthChallengeProcessor: Basic authentication scheme selected
07-22 21:49:25.009 10799 20281 I HttpMethodDirector: Failure authenticating with BASIC 'Nextcloud'@www.myhostname.com:443
07-22 21:49:25.010 10799 20281 D ExistenceCheckRemoteOperation: Existence check for https://www.myhostname.com/nextcloud/remote.php/webdav/ targeting for  existence finished with HTTP status 401(FAIL)
07-22 21:49:25.038 10799 10799 D AuthenticatorActivity: Access failed: Operation finished with HTTP status code 401 (fail)
07-22 21:49:25.157 10799 10799 I chromium: [INFO:CONSOLE(0)] "Error with Feature-Policy header: Unrecognized feature: 'payment'.", source: https://www.myhostname.com/nextcloud/index.php/login/flow (0)
07-22 21:49:25.170 10799 10799 I chromium: [INFO:CONSOLE(3)] "webauthnbridge start execution", source:  (3)
07-22 21:49:25.170 10799 10799 I chromium: [INFO:CONSOLE(123)] "webauthnbridge end execution", source:  (123)
07-22 21:49:25.171 10799 10799 I chromium: [INFO:CONSOLE(6)] "fidobridge start execution", source:  (6)
07-22 21:49:25.171 10799 10799 I chromium: [INFO:CONSOLE(75)] "fidobridge end execution", source:  (75)
07-22 21:49:25.260 10799 10799 I chromium: [INFO:CONSOLE(1)] "No OC found", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.275 10799 10799 I chromium: [INFO:CONSOLE(1)] "JQMIGRATE: Migrate is installed, version 1.4.1", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.324 10799 10799 I chromium: [INFO:CONSOLE(1)] "jQuery is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.324 10799 10799 I chromium: [INFO:CONSOLE(1)] "$ is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.325 10799 10799 I chromium: [INFO:CONSOLE(1)] "$ is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.326 10799 10799 I chromium: [INFO:CONSOLE(1)] "jQuery is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.327 10799 10799 I chatty  : uid=10205(com.nextcloud.client) identical 1 line
07-22 21:49:25.328 10799 10799 I chromium: [INFO:CONSOLE(1)] "jQuery is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.328 10799 10799 I chromium: [INFO:CONSOLE(1)] "session heartbeat polling started", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.330 10799 10799 I chromium: [INFO:CONSOLE(1)] "$ is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)
07-22 21:49:25.334 10799 10799 I chatty  : uid=10205(com.nextcloud.client) identical 1 line
07-22 21:49:25.334 10799 10799 I chromium: [INFO:CONSOLE(1)] "$ is deprecated: The global jQuery is deprecated. It will be updated to v3.x in Nextcloud 21. In later versions of Nextcloud it might be removed completely. Please ship your own.", source: https://www.myhostname.com/nextcloud/core/js/dist/main.js?v=ac4cad0b-20 (1)

Apache's log says this after touching "Grant Access":

fcd4:eeaf:b23e:8c9:ab84:d0cf:3f64:c55d - - [22/Jul/2021:22:09:28 -0400] "POST /nextcloud/index.php/login/flow HTTP/1.1" 303 5859 "-" "Oneplus ONEPLUS A5010 (Android)"
fcd4:eeaf:b23e:8c9:ab84:d0cf:3f64:c55d - - [22/Jul/2021:22:09:30 -0400] "GET /nextcloud/index.php/login/flow HTTP/1.1" 200 5971 "-" "Oneplus ONEPLUS A5010 (Android)"
fcd4:eeaf:b23e:8c9:ab84:d0cf:3f64:c55d - - [22/Jul/2021:22:09:30 -0400] "GET /nextcloud/index.php/core/js/oc.js?v=ac4cad0b HTTP/1.1" 200 5869 "-" "Oneplus ONEPLUS A5010 (Android)"
fcd4:eeaf:b23e:8c9:ab84:d0cf:3f64:c55d - - [22/Jul/2021:22:09:30 -0400] "GET /nextcloud/index.php/apps/theming/image/logo?useSvg=1&v=20 HTTP/1.1" 404 11708 "-" "Oneplus ONEPLUS A5010 (Android)"
robbieh commented 3 years ago

I upgraded the server to 21.0.3 today and the problem persists just as before.

robbieh commented 3 years ago

As a workaround, I downgraded to the 3.15 version from the apk linked below. I lost config, but at least it's functional for now. https://github.com/nextcloud/android/releases/download/stable-3.15.1/nextcloud-30150190.apk

eiver commented 3 years ago

I triggered the bug, when I changed my password using the browser on the desktop. The mobile client did not know, that the password was changed and kept trying to login in a loop using an old password. This behavior was considered a brute-force attack by the server. After this the mobile app started crashing with error log just like in the original post.

szotsaki commented 3 years ago

I can fully reproduce this issue when there is a port specified for the URL (https://xxxxxxx.com:2345) and you're reading the QR code for the app login (which QR code is displayed on this URL).

maxmeyer commented 3 years ago

I have the same error. I set up a new account in the app. The account is an LDAP account - OpenLDAP.

  1. Enter hostname
  2. Enter Username + Password
  3. Acknowledge login
  4. Stack trace

As mentioned before, removing the circles app worked around the problem for me as well.

I can find this in the logs:

grafik

bignose-debian commented 3 years ago

removing the circles app worked around the problem for me as well

I tested this by disabling the Circles app on the server. Then attempting to load the NextCloud app (version 3.16.1, the latest in F-Droid) on a mobile device.

The NextCloud mobile app crashed in the same manner. I conclude the the Circles app was not the (only?) cause of this.

cm-schl commented 3 years ago

I'm seeing the same error on one device and also see the some parallels in the behavior described in nextcloud/server#26502 or nextcloud/server#26806 (app passwords seem to get invalid). Making some tests I changed the LDAP user password and at some point the "app password" of the Nextcloud App seamed to not work anymore. But the app password of the Talk client worked.

I saw that after changing the password and when the token seams to get invalid (you also get dropped out of the web interface) the user got asked one time for the server address like when you're starting the Android app for the first time. If the users does not insert anything, afterwards he only can see the NullPointerException and can't insert a new password until the account gets deleted manually in the phone settings...

M15S21 commented 1 year ago

Transaction error

Parameter specified as non-null is null: method trust.blockchain.b lockchain.nano.NanoRpcService $Companion.toBlock, parameter work

M15S21 commented 1 year ago

Transaction error

Parameter specified as non-null is null: method trust.blockchain.b lockchain.nano.NanoRpcService $Companion.toBlock, parameter work