]> Pileus Git - ~andy/rsl/blobdiff - src/nsig_to_radar.c
Fix out of bound due to null terminated string
[~andy/rsl] / src / nsig_to_radar.c
index 8acd902e92a996fccd3645195b030690dc30ec77..ad1ef7d3748ccbbcbd26b91bf6fe1ad11e934df2 100644 (file)
@@ -161,6 +161,7 @@ RSL_nsig_to_radar
   int sweep_hour, sweep_minute, sweep_second;
   int sweep_sec;
   int z_flag_unc, z_flag_cor, v_flag, w_flag, speckle;
+  int ant_scan_mode;
   float second;
   float pw;
   float bin_space;
@@ -175,7 +176,7 @@ RSL_nsig_to_radar
   float az1, az2;
   double tmp;
   float sqi, log, csr, sig, cal_dbz;
-  char radar_type[50], state[2], city[15];
+  char radar_type[50], state[3], city[15];
   char site_name[16];
   NSIG_Product_file *prod_file;
   short id;
@@ -194,6 +195,7 @@ RSL_nsig_to_radar
   float azm, elev, pitch, roll, heading, azm_rate, elev_rate,
     pitch_rate, roll_rate, heading_rate,
     lat, lon;
+  float fix_angle;
   int alt;  /* Altitude */
   float rvc;  /* Radial correction velocity m/s */
   float vel_east, vel_north, vel_up; /* Platform velocity vectors m/sec */
@@ -477,6 +479,9 @@ RSL_nsig_to_radar
    radar->h.height = (int)sea_lvl_hgt;
    radar->h.spulse = (int)(pw*1000);
    radar->h.lpulse = (int)(pw*1000);
+   ant_scan_mode = NSIG_I2(prod_file->rec2.task_config.scan_info.ant_scan_mode);
+   if(ant_scan_mode == 2 || ant_scan_mode == 7) radar->h.scan_mode = RHI;
+   else radar->h.scan_mode = PPI;
 
    if (radar_verbose_flag) {
 #ifdef NSIG_VER2
@@ -666,8 +671,9 @@ RSL_nsig_to_radar
       sweep->h.beam_width = beam_width;
       sweep->h.vert_half_bw = vert_half_bw;
       sweep->h.horz_half_bw = horz_half_bw;
-      elev = nsig_from_bang(nsig_sweep[itype]->idh.fix_ang);
-      sweep->h.elev = elev;
+      fix_angle = nsig_from_bang(nsig_sweep[itype]->idh.fix_ang);
+      if (radar->h.scan_mode == PPI) sweep->h.elev = fix_angle;
+      else sweep->h.azimuth = fix_angle;
       
       for(j = 0; j < num_rays; j++)
         {
@@ -723,7 +729,7 @@ RSL_nsig_to_radar
             else
               ray->h.unam_rng = 0.0;
           ray->h.prf2 = (int) prf2;
-          ray->h.fix_angle = (float)sweep->h.elev;
+          ray->h.fix_angle = fix_angle;
           ray->h.azim_rate  = azim_rate;
           ray->h.pulse_count = num_samples;
           ray->h.pulse_width = pw;