[Gpredict-svn] SF.net SVN: gpredict:[900] trunk
Real time satellite tracking and orbit prediction
Status: Beta
Brought to you by:
csete
|
From: <aa...@us...> - 2011-09-21 02:35:10
|
Revision: 900
http://gpredict.svn.sourceforge.net/gpredict/?rev=900&view=rev
Author: aa1vs
Date: 2011-09-21 02:35:04 +0000 (Wed, 21 Sep 2011)
Log Message:
-----------
Eliminate segfaults for some .sat file corruption.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/gtk-sat-data.c
trunk/src/sgpsdp/sgp_in.c
trunk/src/tle-update.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2011-09-19 21:24:02 UTC (rev 899)
+++ trunk/ChangeLog 2011-09-21 02:35:04 UTC (rev 900)
@@ -1,3 +1,12 @@
+2011-09-20 Charles Suprin <hamaa1vs at gmail.com>
+
+ * ChangeLog
+ * src/sgpsdp/sgp_in.c
+ * src/tle-update.c
+ * src/gtk-sat-data.c
+ Eliminate segfaults for some .sat file corruption.
+
+
2011-09-19 Charles Suprin <hamaa1vs at gmail.com>
* ChangeLog
Modified: trunk/src/gtk-sat-data.c
===================================================================
--- trunk/src/gtk-sat-data.c 2011-09-19 21:24:02 UTC (rev 899)
+++ trunk/src/gtk-sat-data.c 2011-09-21 02:35:04 UTC (rev 900)
@@ -99,7 +99,19 @@
/* get TLE data */
tlestr1 = g_key_file_get_string (data, "Satellite", "TLE1", NULL);
+ if (error != NULL) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Error reading TLE line 1 from %s (%s)"),
+ __FUNCTION__, path, error->message);
+ g_clear_error (&error);
+ }
tlestr2 = g_key_file_get_string (data, "Satellite", "TLE2", NULL);
+ if (error != NULL) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Error reading TLE line 2 from %s (%s)"),
+ __FUNCTION__, path, error->message);
+ g_clear_error (&error);
+ }
rawtle = g_strconcat (tlestr1, tlestr2, NULL);
@@ -108,9 +120,9 @@
_("%s: TLE data for %d appears to be bad"),
__FUNCTION__, catnum);
errorcode = 2;
+ } else {
+ Convert_Satellite_Data (rawtle, &sat->tle);
}
- Convert_Satellite_Data (rawtle, &sat->tle);
-
if (g_key_file_has_key(data, "Satellite", "STATUS",NULL))
sat->tle.status = g_key_file_get_integer (data, "Satellite", "STATUS", NULL);
Modified: trunk/src/sgpsdp/sgp_in.c
===================================================================
--- trunk/src/sgpsdp/sgp_in.c 2011-09-19 21:24:02 UTC (rev 899)
+++ trunk/src/sgpsdp/sgp_in.c 2011-09-21 02:35:04 UTC (rev 900)
@@ -54,7 +54,11 @@
Checksum_Good (char *tle_set)
{
int i, check_digit, value, checksum = 0;
-
+
+ if ( tle_set == NULL ) {
+ return 0;
+ }
+
for (i = 0; i < 68; i++) {
if ( (tle_set[i] >= '0') && (tle_set[i] <= '9') )
value = tle_set[i] - '0';
Modified: trunk/src/tle-update.c
===================================================================
--- trunk/src/tle-update.c 2011-09-19 21:24:02 UTC (rev 899)
+++ trunk/src/tle-update.c 2011-09-21 02:35:04 UTC (rev 900)
@@ -880,7 +880,7 @@
}
- /* read 3 lines at a time */
+ /* read lines from tle file */
while (fgets (linetmp, 80, fp)) {
/*read in the number of lines needed to potentially get to a new tle*/
switch (linesneeded) {
@@ -1166,9 +1166,25 @@
/* get TLE data */
tlestr1 = g_key_file_get_string (satdata, "Satellite", "TLE1", NULL);
+ if (error != NULL) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Error reading TLE line 2 from %s (%s)"),
+ __FUNCTION__, path, error->message);
+ g_clear_error (&error);
+ }
tlestr2 = g_key_file_get_string (satdata, "Satellite", "TLE2", NULL);
+ if (error != NULL) {
+ sat_log_log (SAT_LOG_LEVEL_ERROR,
+ _("%s: Error reading TLE line 2 from %s (%s)"),
+ __FUNCTION__, path, error->message);
+ g_clear_error (&error);
+ }
+
+ /* get name data */
satname = g_key_file_get_string (satdata, "Satellite", "NAME", NULL);
satnickname = g_key_file_get_string (satdata, "Satellite", "NICKNAME", NULL);
+
+ /* get status data */
if (g_key_file_has_key(satdata,"Satellite","STATUS", NULL)) {
status = g_key_file_get_integer (satdata, "Satellite", "STATUS", NULL);
}
@@ -1182,9 +1198,11 @@
sat_log_log (SAT_LOG_LEVEL_WARN,
_("%s: Current TLE data for %d appears to be bad"),
__FUNCTION__, catnr);
+ /* set epoch to zero so it gets overwritten */
+ tle.epoch = 0;
+ } else {
+ Convert_Satellite_Data (rawtle, &tle);
}
- Convert_Satellite_Data (rawtle, &tle);
-
g_free (tlestr1);
g_free (tlestr2);
g_free (rawtle);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|