diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-03-26 14:49:42 +0000 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-03-26 14:49:42 +0000 |
| commit | fb95a6ff7b7a888f8818e9fb65aaa26292813eda (patch) | |
| tree | 98d097694a109ab4d90ec2b183f061d72f8b834b /src/projections/omerc.cpp | |
| parent | c5772cf1b7cb0f467d12f7f8b99516cc8b3a98c5 (diff) | |
| download | PROJ-fb95a6ff7b7a888f8818e9fb65aaa26292813eda.tar.gz PROJ-fb95a6ff7b7a888f8818e9fb65aaa26292813eda.zip | |
omerc inverse: fix division
Test case https://oss-fuzz.com/testcase-detail/5739351578771456 of
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13894
Credit to OSS Fuzz
Diffstat (limited to 'src/projections/omerc.cpp')
| -rw-r--r-- | src/projections/omerc.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/projections/omerc.cpp b/src/projections/omerc.cpp index e9b7b4a0..c33f6489 100644 --- a/src/projections/omerc.cpp +++ b/src/projections/omerc.cpp @@ -97,6 +97,10 @@ static PJ_LP e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoidal, inverse */ u = xy.y * Q->cosrot + xy.x * Q->sinrot + Q->u_0; } Qp = exp(- Q->BrA * v); + if( Qp == 0 ) { + proj_errno_set(P, PJD_ERR_INVALID_X_OR_Y); + return proj_coord_error().lp; + } Sp = .5 * (Qp - 1. / Qp); Tp = .5 * (Qp + 1. / Qp); Vp = sin(Q->BrA * u); |
