/[winpt]/trunk/Src/wptKeyserver.cpp
ViewVC logotype

Diff of /trunk/Src/wptKeyserver.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 174 by twoaday, Tue Jan 24 10:10:15 2006 UTC revision 175 by twoaday, Tue Feb 7 08:58:04 2006 UTC
# Line 1203  spawn_application (char *cmdl) Line 1203  spawn_application (char *cmdl)
1203  int  int
1204  ldap_recvkey (const char *host, const char *keyid, char *key, int maxkeylen)  ldap_recvkey (const char *host, const char *keyid, char *key, int maxkeylen)
1205  {      {    
1206      FILE *inp;      FILE *fp;
     DWORD n;  
1207      const char *s;      const char *s;
1208      char *ksprg = NULL, *p = NULL, *sep;      char *ksprg = NULL, *p = NULL, *sep;
1209      char temp[512], outf[512];      char inf[256], outf[256], buf[512];
1210        DWORD n;
1211      int start_key = 0, failed = 0;      int start_key = 0, failed = 0;
1212      int rc = 0;      int rc = 0;
1213    
# Line 1227  ldap_recvkey (const char *host, const ch Line 1227  ldap_recvkey (const char *host, const ch
1227                   "%s: could not find LDAP keyserver module!", ksprg);                   "%s: could not find LDAP keyserver module!", ksprg);
1228          rc = -1;          rc = -1;
1229          goto leave;          goto leave;
1230      }          }
1231      GetTempPath (sizeof (temp)-1, temp);      get_temp_name (outf, sizeof (outf)-1, keyid);
1232      _snprintf (outf, sizeof (outf)-1, "%s%s.out", temp, keyid);      get_temp_name (inf, sizeof (inf)-1, NULL);
1233      strcat (temp, keyid);      fp = fopen (inf, "w+b");
1234      inp = fopen (temp, "w+b");      if (!fp) {
1235      if (!inp) {          log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", inf,
         log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", temp,  
1236                   winpt_strerror (WPTERR_FILE_OPEN));                   winpt_strerror (WPTERR_FILE_OPEN));
1237          rc = -1;          rc = -1;
1238          goto leave;          goto leave;
1239      }      }
1240      fprintf (inp,      fprintf (fp,
1241          "VERSION 1\n"          "VERSION 1\n"
1242          "PROGRAM 1.4.3-cvs\n"          "PROGRAM 1.4.3-cvs\n"
1243          "SCHEME ldap\n"          "SCHEME ldap\n"
# Line 1247  ldap_recvkey (const char *host, const ch Line 1246  ldap_recvkey (const char *host, const ch
1246          "\n"          "\n"
1247          "%s\n",          "%s\n",
1248          host? skip_type_prefix (host): "64.94.85.200", keyid);          host? skip_type_prefix (host): "64.94.85.200", keyid);
1249      fclose (inp);      fclose (fp);
1250    
1251      p = new char[strlen (ksprg) + strlen (temp) + strlen (outf) + 32];      p = new char[strlen (ksprg) + strlen (inf) + strlen (outf) + 32];
1252      if (!p)      if (!p)
1253          BUG (NULL);          BUG (NULL);
1254      sprintf (p, "%s -o %s %s", ksprg, outf, temp);      sprintf (p, "%s -o %s %s", ksprg, outf, inf);
1255      if (spawn_application (p)) {      if (spawn_application (p)) {
1256          rc = -1;          rc = -1;
1257          goto leave;          goto leave;
1258      }      }
     DeleteFile (temp);  
1259    
1260      inp = fopen (outf, "rb");      fp = fopen (outf, "rb");
1261      if (!inp) {      if (!fp) {
1262          log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", outf,          log_box ("LDAP Keyserver Plugin", MB_ERR, "%s: %s", outf,
1263                   winpt_strerror (WPTERR_FILE_OPEN));                   winpt_strerror (WPTERR_FILE_OPEN));
1264          rc = -1;          rc = -1;
1265          goto leave;          goto leave;
1266      }      }
1267      memset (key, 0, maxkeylen);      memset (key, 0, maxkeylen);
1268      while (!feof (inp)) {      while (!feof (fp)) {
1269          s = fgets (temp, sizeof (temp)-1, inp);          s = fgets (buf, sizeof (buf)-1, fp);
1270          if (!s)          if (!s)
1271              break;              break;
1272          if (strstr (s, "KEY") && strstr (s, "FAILED")) {          if (strstr (s, "KEY") && strstr (s, "FAILED")) {
# Line 1281  ldap_recvkey (const char *host, const ch Line 1279  ldap_recvkey (const char *host, const ch
1279          }                }      
1280          if (!start_key)          if (!start_key)
1281              continue;              continue;
1282          strcat (key, temp);          strcat (key, buf);
1283          maxkeylen -= strlen (temp);          maxkeylen -= strlen (buf);
1284          if (maxkeylen < 0 || (strstr (s, "KEY") && strstr (s, "END")))          if (maxkeylen < 0 || (strstr (s, "KEY") && strstr (s, "END")))
1285              break;              break;
1286      }      }
1287      fclose (inp);      fclose (fp);
1288    
1289  leave:  leave:
1290      if (failed || !strlen (key))      if (failed || !strlen (key))
1291          rc = WPTERR_WINSOCK_RECVKEY;          rc = WPTERR_WINSOCK_RECVKEY;
1292        DeleteFile (inf);
1293      DeleteFile (outf);      DeleteFile (outf);
1294      free_if_alloc (p);      free_if_alloc (p);
1295      free_if_alloc (ksprg);      free_if_alloc (ksprg);

Legend:
Removed from v.174  
changed lines
  Added in v.175

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26