Changeset 7527 in ntrip


Ignore:
Timestamp:
Oct 20, 2015, 11:12:13 AM (9 years ago)
Author:
stuerze
Message:

minor changes to prevent invalid read if strlen()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncutils.cpp

    r7260 r7527  
    3535 * Created:    30-Aug-2006
    3636 *
    37  * Changes:   
     37 * Changes:
    3838 *
    3939 * -----------------------------------------------------------------------*/
     
    145145  //   *secOfWeek -= 24*60*60;
    146146
    147   // new version 
     147  // new version
    148148  if(mSecOfWeek < 4*60*60*1000 && glo_timeofday > 20*60*60)
    149149    *secOfWeek += 24*60*60;
     
    158158}
    159159
    160 // 
     160//
    161161////////////////////////////////////////////////////////////////////////////
    162162void expandEnvVar(QString& str) {
     
    188188}
    189189
    190 // 
     190//
    191191////////////////////////////////////////////////////////////////////////////
    192192QDateTime dateAndTimeFromGPSweek(int GPSWeek, double GPSWeeks) {
    193193
    194194  static const QDate zeroEpoch(1980, 1, 6);
    195  
     195
    196196  QDate date(zeroEpoch);
    197197  QTime time(0,0,0,0);
     
    204204}
    205205
    206 // 
     206//
    207207////////////////////////////////////////////////////////////////////////////
    208208void currentGPSWeeks(int& week, double& sec) {
     
    216216    currDateTimeGPS = QDateTime::currentDateTime().toUTC();
    217217    QDate hlp       = currDateTimeGPS.date();
    218     currDateTimeGPS = currDateTimeGPS.addSecs(gnumleap(hlp.year(), 
     218    currDateTimeGPS = currDateTimeGPS.addSecs(gnumleap(hlp.year(),
    219219                                                     hlp.month(), hlp.day()));
    220220  }
     
    225225  week = int( (double(currDateGPS.toJulianDay()) - 2444244.5) / 7 );
    226226
    227   sec = (currDateGPS.dayOfWeek() % 7) * 24.0 * 3600.0 + 
    228         currTimeGPS.hour()                   * 3600.0 + 
    229         currTimeGPS.minute()                 *   60.0 + 
     227  sec = (currDateGPS.dayOfWeek() % 7) * 24.0 * 3600.0 +
     228        currTimeGPS.hour()                   * 3600.0 +
     229        currTimeGPS.minute()                 *   60.0 +
    230230        currTimeGPS.second()                          +
    231231        currTimeGPS.msec()                   / 1000.0;
    232232}
    233233
    234 // 
     234//
    235235////////////////////////////////////////////////////////////////////////////
    236236QDateTime currentDateAndTimeGPS() {
     
    246246}
    247247
    248 // 
     248//
    249249////////////////////////////////////////////////////////////////////////////
    250250QByteArray ggaString(const QByteArray& latitude,
     
    268268  if (lat < 0.)  {lat=lat*(-1.); flagN="S";}
    269269  QTime ttime(QDateTime::currentDateTime().toUTC().time());
    270   int lat_deg = (int)lat; 
     270  int lat_deg = (int)lat;
    271271  double lat_min=(lat-lat_deg)*60.;
    272   int lon_deg = (int)lon; 
     272  int lon_deg = (int)lon;
    273273  double lon_min=(lon-lon_deg)*60.;
    274274  int hh = 0 , mm = 0;
     
    287287  gga += QString("M,10.000,M,,");
    288288  int xori;
     289
    289290  char XOR = 0;
    290   char *Buff =gga.toAscii().data();
     291  char Buff[gga.size()];
     292  strncpy(Buff, gga.toAscii().data(), gga.size());
    291293  int iLen = strlen(Buff);
    292294  for (xori = 0; xori < iLen; xori++) {
     
    298300}
    299301
    300 // 
     302//
    301303////////////////////////////////////////////////////////////////////////////
    302304void RSW_to_XYZ(const ColumnVector& rr, const ColumnVector& vv,
     
    337339  const double e2   = (t_CST::aell*t_CST::aell-bell*bell)/(t_CST::aell*t_CST::aell) ;
    338340  const double e2c  = (t_CST::aell*t_CST::aell-bell*bell)/(bell*bell) ;
    339  
     341
    340342  double nn, ss, zps, hOld, phiOld, theta, sin3, cos3;
    341343
     
    347349
    348350  // Closed formula
    349   Ell[0] = atan( (XYZ[2] + e2c * bell * sin3) / (ss - e2 * t_CST::aell * cos3) ); 
     351  Ell[0] = atan( (XYZ[2] + e2c * bell * sin3) / (ss - e2 * t_CST::aell * cos3) );
    350352  Ell[1] = atan2(XYZ[1],XYZ[0]) ;
    351353  nn = t_CST::aell/sqrt(1.0-e2*sin(Ell[0])*sin(Ell[0])) ;
     
    429431}
    430432
    431 // 
     433//
    432434////////////////////////////////////////////////////////////////////////////
    433435double Frac (double x) {
    434   return x-floor(x); 
    435 }
    436 
    437 //
    438 ////////////////////////////////////////////////////////////////////////////
    439 double Modulo (double x, double y) { 
    440   return y*Frac(x/y); 
     436  return x-floor(x);
     437}
     438
     439//
     440////////////////////////////////////////////////////////////////////////////
     441double Modulo (double x, double y) {
     442  return y*Frac(x/y);
    441443}
    442444
     
    473475
    474476
    475 // Jacobian XYZ --> NEU 
     477// Jacobian XYZ --> NEU
    476478////////////////////////////////////////////////////////////////////////////
    477479void jacobiXYZ_NEU(const double* Ell, Matrix& jacobi) {
     
    487489  jacobi(1,2) = - sinPhi * sinLam;
    488490  jacobi(1,3) =   cosPhi;
    489                            
    490   jacobi(2,1) = - sinLam;       
     491
     492  jacobi(2,1) = - sinLam;
    491493  jacobi(2,2) =   cosLam;
    492   jacobi(2,3) =   0.0;         
    493                            
    494   jacobi(3,1) = cosPhi * cosLam; 
    495   jacobi(3,2) = cosPhi * sinLam; 
     494  jacobi(2,3) =   0.0;
     495
     496  jacobi(3,1) = cosPhi * cosLam;
     497  jacobi(3,2) = cosPhi * sinLam;
    496498  jacobi(3,3) = sinPhi;
    497499}
     
    524526  jacobi(3,2) = 0.0;
    525527  jacobi(3,3) = sinPhi;
    526 } 
     528}
    527529
    528530// Covariance Matrix in NEU
    529531////////////////////////////////////////////////////////////////////////////
    530 void covariXYZ_NEU(const SymmetricMatrix& QQxyz, const double* Ell, 
     532void covariXYZ_NEU(const SymmetricMatrix& QQxyz, const double* Ell,
    531533                   SymmetricMatrix& Qneu) {
    532534
     
    540542// Covariance Matrix in XYZ
    541543////////////////////////////////////////////////////////////////////////////
    542 void covariNEU_XYZ(const SymmetricMatrix& QQneu, const double* Ell, 
     544void covariNEU_XYZ(const SymmetricMatrix& QQneu, const double* Ell,
    543545                   SymmetricMatrix& Qxyz) {
    544546
     
    558560  double* acc,            // aditional acceleration
    559561  ColumnVector (*der)(double x, const ColumnVector& y, double* acc)
    560                           // A pointer to a function that computes the 
     562                          // A pointer to a function that computes the
    561563                          // derivative of a function at a point (x,y)
    562564                         ) {
     
    568570
    569571  ColumnVector yf = yi + k1/6.0 + k2/3.0 + k3/3.0 + k4/6.0;
    570  
     572
    571573  return yf;
    572574}
    573 // 
     575//
    574576////////////////////////////////////////////////////////////////////////////
    575577double djul(long jj, long mm, double tt) {
     
    579581    jj = jj - 1;
    580582    mm = mm + 12;
    581   } 
     583  }
    582584  ii   = jj/100;
    583585  kk   = 2 - ii + ii/4;
     
    585587  djul = djul + floor( 30.6001*(mm + 1) ) + tt + kk;
    586588  return djul;
    587 } 
    588 
    589 // 
     589}
     590
     591//
    590592////////////////////////////////////////////////////////////////////////////
    591593double gpjd(double second, int nweek) {
     
    593595  deltat = nweek*7.0 + second/86400.0 ;
    594596  return( 44244.0 + deltat) ;
    595 } 
    596 
    597 // 
     597}
     598
     599//
    598600////////////////////////////////////////////////////////////////////////////
    599601void jdgp(double tjul, double & second, long & nweek) {
     
    604606}
    605607
    606 // 
     608//
    607609////////////////////////////////////////////////////////////////////////////
    608610void jmt(double djul, long& jj, long& mm, double& dd) {
     
    622624  jj  = ih1;
    623625  if ( mm <= 2 ) jj = jj + 1;
    624 } 
    625 
    626 // 
    627 ////////////////////////////////////////////////////////////////////////////
    628 void GPSweekFromDateAndTime(const QDateTime& dateTime, 
     626}
     627
     628//
     629////////////////////////////////////////////////////////////////////////////
     630void GPSweekFromDateAndTime(const QDateTime& dateTime,
    629631                            int& GPSWeek, double& GPSWeeks) {
    630632
    631633  static const QDateTime zeroEpoch(QDate(1980, 1, 6),QTime(),Qt::UTC);
    632  
     634
    633635  GPSWeek = zeroEpoch.daysTo(dateTime) / 7;
    634636
     
    637639
    638640  GPSWeeks = (weekDay - 1) * 86400.0
    639              - dateTime.time().msecsTo(QTime()) / 1e3; 
    640 }
    641 
    642 // 
     641             - dateTime.time().msecsTo(QTime()) / 1e3;
     642}
     643
     644//
    643645////////////////////////////////////////////////////////////////////////////
    644646void GPSweekFromYMDhms(int year, int month, int day, int hour, int min,
     
    650652  jdgp(mjd, GPSWeeks, GPSWeek_long);
    651653  GPSWeek = GPSWeek_long;
    652   GPSWeeks += hour * 3600.0 + min * 60.0 + sec; 
    653 }
    654 
    655 // 
     654  GPSWeeks += hour * 3600.0 + min * 60.0 + sec;
     655}
     656
     657//
    656658////////////////////////////////////////////////////////////////////////////
    657659void mjdFromDateAndTime(const QDateTime& dateTime, int& mjd, double& dayfrac) {
     
    663665  dayfrac = (dateTime.time().hour() +
    664666             (dateTime.time().minute() +
    665               (dateTime.time().second() + 
     667              (dateTime.time().second() +
    666668               dateTime.time().msec() / 1000.0) / 60.0) / 60.0) / 24.0;
    667669}
    668670
    669 // 
     671//
    670672////////////////////////////////////////////////////////////////////////////
    671673bool findInVector(const vector<QString>& vv, const QString& str) {
     
    679681}
    680682
    681 // 
     683//
    682684////////////////////////////////////////////////////////////////////////////
    683685int readInt(const QString& str, int pos, int len, int& value) {
     
    687689}
    688690
    689 // 
     691//
    690692////////////////////////////////////////////////////////////////////////////
    691693int readDbl(const QString& str, int pos, int len, double& value) {
     
    703705// Topocentrical Distance and Elevation
    704706////////////////////////////////////////////////////////////////////////////
    705 void topos(double xRec, double yRec, double zRec, 
    706            double xSat, double ySat, double zSat, 
     707void topos(double xRec, double yRec, double zRec,
     708           double xSat, double ySat, double zSat,
    707709           double& rho, double& eleSat, double& azSat) {
    708710
     
    712714  dx[2] = zSat-zRec;
    713715
    714   rho =  sqrt( dx[0]*dx[0] + dx[1]*dx[1] + dx[2]*dx[2] ); 
     716  rho =  sqrt( dx[0]*dx[0] + dx[1]*dx[1] + dx[2]*dx[2] );
    715717
    716718  double xyzRec[3];
     
    741743}
    742744
    743 // 
     745//
    744746////////////////////////////////////////////////////////////////////////////
    745747QString fortranFormat(double value, int width, int prec) {
     
    760762//
    761763//////////////////////////////////////////////////////////////////////////////
    762 void kalman(const Matrix& AA, const ColumnVector& ll, const DiagonalMatrix& PP, 
     764void kalman(const Matrix& AA, const ColumnVector& ll, const DiagonalMatrix& PP,
    763765            SymmetricMatrix& QQ, ColumnVector& xx) {
    764766
     
    777779  SRF.SubMatrix   (nObs+1, nObs+nPar, 1, nObs) = SA;
    778780  SRF.SymSubMatrix(nObs+1, nObs+nPar)          = SS;
    779  
     781
    780782  UpperTriangularMatrix UU;
    781783  QRZ(SRF, UU);
    782  
     784
    783785  SS = UU.SymSubMatrix(nObs+1, nObs+nPar);
    784786  UpperTriangularMatrix SH_rt = UU.SymSubMatrix(1, nObs);
    785787  Matrix YY  = UU.SubMatrix(1, nObs, nObs+1, nObs+nPar);
    786  
     788
    787789  UpperTriangularMatrix SHi = SH_rt.i();
    788  
    789   Matrix KT  = SHi * YY; 
     790
     791  Matrix KT  = SHi * YY;
    790792  SymmetricMatrix Hi; Hi << SHi * SHi.t();
    791793
Note: See TracChangeset for help on using the changeset viewer.